Compare commits

...

650 Commits

Author SHA1 Message Date
SaraP 5a3661a61d Include :
- aggiornamento prototipi.
2026-05-12 15:08:50 +02:00
Riccardo Elitropi 5b7e1a4702 Include :
- in CalcPocketing aggiunto flag per Conventional Milling.
2026-05-11 10:05:34 +02:00
Daniele Bariletti fa9976ddfb Include :
- esposta funzione per trovare il punto corrispondente sulla seconda curva di una coppia di curve da sincronizzare.
2026-05-08 17:23:39 +02:00
Daniele Bariletti 93d6077de6 Include :
- aggiunto enum per trimming
- aggiunto argomento a RegolarizeLocally
2026-05-07 11:28:20 +02:00
Dario Sassi 513ab88c6e Include :
- aggiornamento codice di protezione mansile delle librerie
2026-05-05 09:07:33 +02:00
Riccardo Elitropi 02208b5259 Include :
- in MachiningGeoConst aggiunta costante MCH_HOME.
2026-04-30 16:37:53 +02:00
Daniele Bariletti de9e442be8 Include :
- modifiche alla chiamata di ModifyJoint.
- cambio nome alla ModifySingleCurve.
2026-04-28 11:06:55 +02:00
Riccardo Elitropi 3d3b0a569c Include :
- In EGkCalcPocketing aggiunto prototipo per svuotature di fori.
2026-04-28 11:02:55 +02:00
Daniele Bariletti 903d20744c Include :
- aggiunte funzioni di utilità per le CurveComposite.
2026-04-27 14:59:09 +02:00
Daniele Bariletti cf26040cc5 Merge branch 'master' of https://gitlab.steamware.net/egalware-cadcam/libreriebase/Include 2026-04-22 16:45:36 +02:00
Daniele Bariletti 082a2831df Include :
- aggiornamento prototipi.
2026-04-22 16:45:28 +02:00
Riccardo Elitropi 717267e832 Include :
- modifica alla costante per nome entità CamData in Drilling in Doppio in Parallelo.
2026-04-22 13:11:56 +02:00
Daniele Bariletti abd033342b Include :
- aggiunte funzioni per la regolarizzazione dei bordi di una surf di trimming.
-
2026-04-21 15:08:56 +02:00
Dario Sassi 7b3aeb6c4c Include :
- aggiornamento prototipi.
2026-04-19 10:52:31 +02:00
Dario Sassi 707e8f089a Include :
- aggiornamento prototipi.
2026-04-15 08:55:04 +02:00
Daniele Bariletti f91035138c Include :
- aggiunte funzioni per la creazione di smooth ruled bezier.
2026-04-10 18:18:30 +02:00
Dario Sassi f5fb14805b Include :
- aggiornamento prototipi.
2026-04-08 19:23:15 +02:00
Dario Sassi e587f78c21 Include :
- aggiornamento codice di protezione mansile delle librerie.
2026-04-01 10:23:29 +02:00
Riccardo Elitropi 32fecb707c Include :
- in CalcPocketing aggiunti parametri per gestione lucidature.
2026-03-31 18:50:52 +02:00
Daniele Bariletti 707c01e3e3 Include :
- aggiunta funzione di utilità per le bezier.
2026-03-31 16:20:24 +02:00
Riccardo Elitropi 27095ab86b Merge commit 'a11da73e368f70969ffdd3e8d3acc6988ff6aa06' 2026-03-31 14:33:00 +02:00
Riccardo Elitropi a11da73e36 Include (Nst_SurfFr) :
- modifica stilistica.
2026-03-31 14:32:41 +02:00
Riccardo Elitropi ca5efc44a9 Include (Nst_SurfFr) :
- aggiornamento prototipi.
2026-03-30 18:14:56 +02:00
Riccardo Elitropi 4352332d54 Include (Nst_SurfFr) :
- primo commit per CAv tra Regioni Piane con loop interni e Interferenza tra Regioni Piane.
2026-03-27 18:32:58 +01:00
Daniele Bariletti 0b155ef732 Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2026-03-26 12:41:00 +01:00
Daniele Bariletti 71e670357b Include :
- aggiornamento prototipi.
2026-03-26 12:40:51 +01:00
Dario Sassi 41f2151748 Include :
- aggiornamento prototipi.
2026-03-25 16:39:15 +01:00
Riccardo Elitropi 28ae97ae20 Include :
- modificati prototipi per funzioni di creazione Zmap per versioni a 32Bit.
2026-03-24 16:00:07 +01:00
Dario Sassi cac25dd095 Include :
- aggiornamento prototipi.
2026-03-20 09:04:43 +01:00
Dario Sassi 2eccae4b92 Include :
cambio nome funzioni da EraseFins a RemoveFins.
2026-03-19 19:29:02 +01:00
Riccardo Elitropi fac9c9cbc7 Include :
- aggiunti prototipi funzione EraseFins per gli Zmap.
2026-03-19 18:47:03 +01:00
Riccardo Elitropi c879b37f7d Include :
- in MachMgr ed ExeExecutor aggiunte funzioni per ottenere vTDir, vCDir e vADir dalle entità CamData.
2026-03-18 16:22:37 +01:00
Daniele Bariletti a6c5a4e6ca Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2026-03-16 17:00:28 +01:00
Daniele Bariletti b6a535a3b7 Include :
- aggiunto parametro alla GetSide della DistPointCurve.
2026-03-16 17:00:20 +01:00
Dario Sassi 84ae21db77 Include :
- aggiornamento prototipi.
2026-03-13 13:36:31 +01:00
Daniele Bariletti 89d62ea86a Include :
- cambio restituzione valori per ExeSurfBezParamsFromPoint.
2026-03-12 18:13:30 +01:00
Daniele Bariletti 4e4ac1353e Include :
- aggiunte funzioni per l'analisi di una surf di bezier.
2026-03-11 16:08:12 +01:00
Daniele Bariletti f24ca04620 Include :
- modifica alla chiamata LUA per EgtSurfBezParamsFromPoint
- resa disponibile interfaccia per ExeSurfBezParamsFromPoint.
2026-03-10 17:34:01 +01:00
Daniele Bariletti 6819363068 Include :
- piccola correzione.
2026-03-05 09:11:35 +01:00
Daniele Bariletti bd01cb72fd Include :
- piccola correzione.
2026-03-04 15:33:47 +01:00
Daniele Bariletti 32cba3873e Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2026-03-04 15:29:22 +01:00
Daniele Bariletti ee7aabb242 Include :
- aggiunta funzione per chiedere a che part appartiene una faccia di una trimesh.
2026-03-04 15:29:15 +01:00
Dario Sassi 552c408827 Include :
- aggiornamento prototipi.
2026-03-03 18:33:07 +01:00
Riccardo Elitropi 8bd32361be Merge commit '4833024c3e984fbeaad901a9e37eb09e9e862823' 2026-03-03 17:16:42 +01:00
Riccardo Elitropi 4833024c3e Include :
- aggiunto nome Entità CL speciali per drilling in doppio.
2026-03-03 17:12:16 +01:00
Riccardo Elitropi ac47b1bf6f Merge commit 'a1bcc4ff9e08d79ee4e42043bab5adf5044716c8' into Preview 2026-03-03 17:11:08 +01:00
Dario Sassi a1bcc4ff9e Include :
- aggiornamento codice di protezione mansile delle librerie.
2026-03-03 08:42:22 +01:00
Riccardo Elitropi c0657147bb Include (Preview utensile) :
- aggiunta costante per gruppo ST per lavorazione in doppio.
2026-02-27 17:09:41 +01:00
Dario Sassi 9bbb8506e9 Include :
- aggiunta funzione ToString per C vector unsigned int.
2026-02-24 08:37:36 +01:00
Dario Sassi 5045a04dca Include :
- ritocco estetico.
2026-02-23 12:39:01 +01:00
Daniele Bariletti b4f0bc19ce Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2026-02-23 09:46:01 +01:00
Daniele Bariletti f841a7444b Include :
- aggiunto flag per la funzione GetLeaves.
2026-02-23 09:45:48 +01:00
Riccardo Elitropi d481592dfa Include :
- Aggiunte funzioni per Trimming.
2026-02-20 16:53:22 +01:00
Dario Sassi 73fcfd5138 Include :
- aggiornamento codice di protezione mansile delle librerie.
2026-02-16 11:53:58 +01:00
Daniele Bariletti 754f2bd12d Include :
- riduzione dimensione minima di default per i triangoli nelle surf bezier.
2026-02-12 16:18:28 +01:00
Daniele Bariletti 3ce904e2dd Include :
- aggiunta modalità di approssimazione con bezier.
- aggiornata la chiamata alla funzione di approssimazione con bezier.
2026-02-11 16:45:02 +01:00
Dario Sassi cd8bf29916 Include :
- aggiornamento prototipi.
2026-02-09 08:23:32 +01:00
Daniele Bariletti 003ff35da1 Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2026-02-05 16:51:56 +01:00
Daniele Bariletti bf9ea5e644 Include :
- aggiornamento prototipi.
2026-02-05 16:51:48 +01:00
Dario Sassi cdc2df5d64 Merge branch 'master' of https://gitlab.steamware.net/egaltech/include 2026-02-03 17:29:47 +01:00
Dario Sassi 47cdbac0e3 Include :
- aggiornamento prototipi.
2026-02-03 17:29:00 +01:00
Riccardo Elitropi 4589358588 Include :
- in Trimming aggiunte funzioni per riconoscimento Fori e Asole.
- in Trimming pulizia codice.
2026-02-03 17:14:18 +01:00
Riccardo Elitropi 1efe9e2395 Include :
- in Trimming piccola correzione.
2026-01-26 18:01:39 +01:00
Dario Sassi 2c6c6b9e96 Include :
- per BTL aggiunto flag di gestione geometrica del PARTOFFSET.
2026-01-23 18:52:11 +01:00
Riccardo Elitropi b54a74726d Include :
- piccola miglioria.
2026-01-23 18:03:07 +01:00
Dario Sassi dec994247a Includee :
- aggiornamento parametri.
2026-01-23 10:22:52 +01:00
Daniele Bariletti 71b98a0505 Include :
- aggiornata funzione GetSurfBezierRuledGuided.
2026-01-22 11:25:13 +01:00
Riccardo Elitropi 7bace5d80f Include :
- in Trimming aggiornamento prototipi.
2026-01-21 18:26:15 +01:00
Daniele Bariletti 7084ab34c8 Include :
- spostata la funzione GetChainedCurves.
2026-01-21 10:04:38 +01:00
Riccardo Elitropi ed77709276 Include :
- modifica prototipi per funzioni di Trimming.
2026-01-20 17:28:05 +01:00
Daniele Bariletti f3631e973a Include :
- aggiunta utilità per la classe chianCurve.
2026-01-19 15:27:55 +01:00
Daniele Bariletti 979d989232 EgtExecutor :
- modificata la chiamata a GetSurfBezierRuledGuided.
2026-01-19 12:33:03 +01:00
Daniele Bariletti a89307aeeb Include :
- aggiunti argomenti alla fuzione GetSurfBezierRuledGuided.
2026-01-15 11:51:08 +01:00
Daniele Bariletti 205af03a9b Include :
- piccola miglioria.
2026-01-12 11:24:09 +01:00
Dario Sassi d41673218e Include :
- aggiornamento prototipi.
2026-01-09 19:00:56 +01:00
Dario Sassi d379137f70 Include :
- tutte le funzioni ToStringAdv sono diventate inline nell'header.
2026-01-09 15:39:40 +01:00
Dario Sassi 941daabb49 Include :
- aggiornamento prototipi per striping di superfici per trimming dei termoformati.
2026-01-04 20:38:36 +01:00
Dario Sassi 6b7b59ae58 Include :
- aggiornamento prototipi.
2026-01-04 12:54:12 +01:00
Dario Sassi ac8b796d10 Include :
- cambio codici di protezione Dll (ora 31xx).
2026-01-02 12:28:19 +01:00
Dario Sassi 5b26ab4733 Include :
- aggiunta costante GDB_SV_CMPBIN per salvatggio binario compresso del DB geometrico.
2025-12-29 08:42:43 +01:00
Dario Sassi df70cef32d Include :
- aggiornamento prototipi.
2025-12-23 15:34:12 +01:00
Daniele Bariletti 02bea83d38 Include :
- aggiunta funzione di correzione per bezier importate.
2025-12-19 15:05:38 +01:00
Dario Sassi 25817a8911 Include :
- aggiornamento prototipi.
2025-12-19 09:47:27 +01:00
Riccardo Elitropi 6b59d709f6 Include :
- modifica prototipi in Machining Optimization.
2025-12-18 09:03:03 +01:00
Riccardo Elitropi bb9f7b5fba Include :
- in Machining Optimization aggiunta gestione OpenBounds.
2025-12-17 14:56:51 +01:00
Riccardo Elitropi 06d074869d Include :
- in Machining Optimization aggiunta ottimizzazione mirata ai singoli gruppi.
2025-12-16 15:43:24 +01:00
Dario Sassi fd7873a501 Include :
- modifiche estetiche.
2025-12-15 16:51:56 +01:00
Riccardo Elitropi 106c053a09 Include :
- Aggiunta funzione di creazione SurfTm Shell.
2025-12-15 11:27:08 +01:00
Dario Sassi d44f31af7f Include :
- aggiornamento prototipi.
2025-12-11 08:49:01 +01:00
Dario Sassi 08ddbc9291 Include :
- aggiornamento prototipi.
2025-12-09 08:13:01 +01:00
Riccardo Elitropi d213cd0cd6 Include :
- in Redis aggiunta lettura ultimo Messaggio.
2025-12-04 14:26:02 +01:00
Dario Sassi 034cff8431 Include :
- aggiornamento codici di protezione mensili.
2025-12-01 11:58:01 +01:00
Riccardo Elitropi 6a70d13cd9 Include :
Aggiunte costanti per intersezione Linea con Box.
2025-12-01 08:34:11 +01:00
Dario Sassi 8fc265c399 Include :
- aggiornamento prototipi
- aggiunta costante generale PREC_SCALE_COEFF.
2025-11-24 10:03:27 +01:00
Daniele Bariletti b311f9f343 Include :
- aggiunta la possibilità di filtrare le intersezioni 3d per una IntersCurveCurve.
2025-11-19 13:09:13 +01:00
Daniele Bariletti 229eef8d19 Include :
- aggiunto un parametro per la restituzione dei parametri di un vertice di una trimesh.
2025-11-18 16:16:12 +01:00
Daniele Bariletti eb09b797a0 Include :
- aggiunta funzione per la verifica dell'overlap tra box in frame diversi.
2025-11-18 11:33:31 +01:00
Daniele Bariletti ee9bff2fe9 Include :
- piccola correzione.
2025-11-18 09:53:39 +01:00
Daniele Bariletti 7cc55217f8 Include :
- correzione prototipi.
2025-11-18 09:14:52 +01:00
Daniele Bariletti dacf041b67 Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2025-11-17 16:52:39 +01:00
Daniele Bariletti 1d43a09141 Include :
- aggiunte funzioni di utilità per plane3d e bbox3d.
2025-11-17 16:52:34 +01:00
Dario Sassi 1655127475 Include :
- aggiunte costanti
- piccola miglioria in funzione inline.
2025-11-15 10:59:29 +01:00
Dario Sassi 45c642e51a Include :
- salvataggio file come UTF-8 no BOM.
2025-11-12 15:59:52 +01:00
Daniele Bariletti 4f79b63f80 Merge branch 'NewRuled' 2025-11-12 13:09:36 +01:00
Daniele Bariletti 69b3f4f555 Include :
- aggiunto un parametro di ritorno alla inters curve-plane.
2025-11-12 13:09:16 +01:00
Daniele Bariletti f2d39a98a7 Merge branch 'master' into NewRuled 2025-11-12 08:53:36 +01:00
Daniele Bariletti a39ea29632 Include :
- aggiunta classe inters curve plane.
- aggiunta funzione surf ruled guided.
2025-11-12 08:53:12 +01:00
Dario Sassi 4c6d87389d Include :
- aggiornamento prototipi.
2025-11-07 17:58:39 +01:00
Dario Sassi d580b3dacb Include :
- aggiornamento prototipi.
2025-11-06 18:47:08 +01:00
Dario Sassi 9472b42520 Include :
- aggiornamento prototipi e costanti.
2025-11-05 11:28:08 +01:00
Riccardo Elitropi 0fa10b233f Include :
- aggiunta funzione per il calcolo della curvatura in un vertice per una superficie TriMesh.
2025-11-04 15:56:56 +01:00
Dario Sassi 658a6a319b Include :
- aggiornamento prototipi.
2025-11-03 18:07:10 +01:00
Dario Sassi 3b9501cfdd Include :
- aggiornamento prototipi.
2025-11-03 15:17:36 +01:00
Dario Sassi d4d7b75015 Include :
- aggiornamento prototipi
- modifiche a UserObjFactory per passaggio a C++ 20.
2025-11-01 17:16:46 +01:00
Riccardo Elitropi ef8565ce72 Include :
- in Redis aggiunta gestione di connessioni multiple.
2025-10-31 10:36:41 +01:00
Dario Sassi c8e73a6f15 Include :
- aggiornamento prototipi.
2025-10-29 19:29:34 +01:00
Daniele Bariletti 7ebf9a6fb0 Include :
- aggiunta funzione per il calcolo della distanza tra punto e superficie di Bezier.
2025-10-29 15:12:28 +01:00
Daniele Bariletti fe9d75c14f Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2025-10-29 14:50:35 +01:00
Daniele Bariletti 809b1a4405 Include :
- aggiunta classe DistPointSurfBz
2025-10-29 14:50:29 +01:00
Dario Sassi 766508b041 Include :
- aggiornamento prototipi.
2025-10-28 16:18:15 +01:00
Dario Sassi 1cc997c31a Include :
- aggiornamento prototipi.
2025-10-28 15:23:01 +01:00
Daniele Bariletti 2a91cddd37 Include :
- aggiunta modalità di creazione di una polyline.
2025-10-24 11:53:52 +02:00
Daniele Bariletti b1a801ed60 Include :
- cambiata la gestione della razionalità per la conversione in curve di bezier.
2025-10-22 12:54:43 +02:00
Daniele Bariletti 779569644b Include :
- aggiornata la chiamata a GetApproxSurf per le bezier.
2025-10-21 12:26:02 +02:00
Daniele Bariletti 5b5cc241db Include :
- aggiornati prototipi.
2025-10-21 09:38:42 +02:00
Daniele Bariletti cb7dbb0e52 Include :
- piccola correzione.
2025-10-17 15:41:25 +02:00
Daniele Bariletti 5113903eb2 Include:
- aggiornati gli argomenti della funzione per il calcolo dell'errore di approssimazione.
2025-10-17 15:37:55 +02:00
Daniele Bariletti df4e8edcef Include :
- aggiornati prototipi per surf bezier.
2025-10-14 16:24:27 +02:00
Dario Sassi 98d2a79026 Include :
- aggiornamento prototipi.
2025-10-13 09:49:05 +02:00
Dario Sassi 3d06ce7c60 Include :
- modifiche nelle dichiarazioni dei puntatori a funzione
- aggiornamento prototipi.
2025-10-13 08:45:31 +02:00
Dario Sassi c2032ba0af Include :
- aggiornamento prototipi.
2025-10-11 10:01:18 +02:00
Daniele Bariletti 22681a960d Include :
- aggiunto un tipo di interpolazione con le bezier.
2025-10-10 12:13:32 +02:00
Riccardo Elitropi e7a6f95012 Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2025-10-09 09:35:29 +02:00
Riccardo Elitropi 7b98133ae5 Include :
- Estesa e migliorata la funzione MakeUniform per VolZMap.
2025-10-09 09:35:22 +02:00
Dario Sassi 2d430c3fd6 Include :
- aggiornamento prototipi.
2025-10-08 18:30:06 +02:00
Dario Sassi b127fca1f3 Include :
- aggiornamento codici di protezione mensili.
2025-10-07 13:33:00 +02:00
SaraP 4b22adfdfa Include :
- aggiunto prototipo.
2025-10-02 11:18:07 +02:00
Riccardo Elitropi 7727db9a8a Include :
- modifica prototipi per funzioni redis
- aggiunta funzione GetValInNotes con parametro aggiuntivo.
2025-09-26 11:55:43 +02:00
Daniele Bariletti f6caa955e2 Include :
- aggiornamento prototipi bezier per parametro razionale.
2025-09-26 10:42:48 +02:00
Dario Sassi 2e15fcf59f Include :
- aggiornamento prototipi.
2025-09-25 16:47:53 +02:00
Riccardo Elitropi 35ce9e3621 Include :
- aggiunti prototipi funzioni hiredis.
2025-09-24 16:08:16 +02:00
Dario Sassi 7b7dc44aaf Include :
- aggiunta definizione di coppie di double e relative raccolte.
2025-09-22 18:32:44 +02:00
Dario Sassi 871cd05201 Include :
- aggiornamento prototipi.
2025-09-19 11:12:05 +02:00
Dario Sassi 6f7c15cf54 Include :
- aggiunte FromString e ToString per long long.
2025-09-18 10:36:51 +02:00
Daniele Bariletti b4305fc503 Include :
- aggiunta funzione per creare il loop di un triangolo di una trimesh.
2025-09-17 11:27:13 +02:00
Daniele Bariletti ccbbc31395 Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2025-09-16 14:37:16 +02:00
Daniele Bariletti a755677379 Include :
- correzione valore di default di ingrandimento box per la costruzione VolZmap da trimesh.
2025-09-16 14:37:10 +02:00
Dario Sassi 8e99498a6b Include :
- aggiornamento prototipi.
2025-09-14 23:01:20 +02:00
Riccardo Elitropi 45aa980693 Include :
- Aggiunte funzioni per Offset Fillet di VolZmap e per Offset generici di superfici TriMesh aperte.
- Aggiunta funzione in DistPointSurfTm per ottenere i triangoli a minima distanza.
2025-09-12 16:56:44 +02:00
Daniele Bariletti bfffbbf37b Include :
- correzione aggiornamento conversione bezier.
2025-09-12 15:58:56 +02:00
Daniele Bariletti 8da5aeb3a4 Merge branch 'FasterVMill5Axis_Bez3x1' 2025-09-12 15:43:12 +02:00
Daniele Bariletti 65e20afeab Include :
- aggiornate le interfacce per le funzioni di conversione di curve in/da bezier.
2025-09-12 15:39:24 +02:00
Daniele Bariletti d8c4b93e46 Merge branch 'master' into FasterVMill5Axis_Bez3x1 2025-09-12 15:12:19 +02:00
Daniele Bariletti d39e6dfe19 Include :
- enum per intersezione linea bezier.
2025-09-12 13:18:19 +02:00
SaraP ee01a02292 Include :
- aggiunti prototipi per calcolo shear sequence nel nesting
- aggiunta funzione LuaSetParam per vettore di punti.
2025-09-12 10:20:30 +02:00
Dario Sassi d8f50f040c Include :
- aggiornamento parametri.
2025-09-11 15:20:55 +02:00
Daniele Bariletti 9cbfcd7422 Include :
- aggiunte intersezioni linea triangolo ausiliario per le sup di bezier.
2025-09-10 09:47:47 +02:00
Dario Sassi 4cc94522ca Include :
- ripristinate costanti risultato intersezione linea triangolo.
2025-09-10 08:51:58 +02:00
Dario Sassi fd3d53c777 Merge branch 'master' of https://gitlab.steamware.net/egaltech/include 2025-09-10 08:18:30 +02:00
Dario Sassi 6699e21059 Include :
- aggiornamento prototipi.
2025-09-10 08:10:36 +02:00
Daniele Bariletti 59dc7c0cce Include :
- aggiunta una funzione per l'accoppiamento delle polyline.
- aggiornato un enum per le intersezioni linea trinagolo.
2025-09-09 15:02:17 +02:00
Riccardo Elitropi 2010e58f5c Include :
- Aggiunta gestione Offset Thickening per superfici TriMesh
- Aggiunta gestione Offset Chamfer ed Extend.
2025-09-05 17:00:44 +02:00
Dario Sassi 5df80c8ae7 Include :
- aggiornamento codici di protezione mensili.
2025-09-04 19:34:43 +02:00
Daniele Bariletti d377f00b9b Include :
- aggiunta commenti.
2025-09-02 13:21:54 +02:00
Daniele Bariletti be2c7b8d7d Include :
- uniformazione delle funzioni di conversione in curve di bezier.
2025-08-28 16:10:38 +02:00
Dario Sassi 6c3cb3289e Include :
- aggiornamento prototipi.
2025-08-24 19:15:57 +02:00
SaraP c98318f8ba Include :
- aggiunte nuove costanti per lavorazione SawRoughing.
2025-08-22 12:34:37 +02:00
Dario Sassi 31436bfb7c Include :
- aggiunta funzione Pow per potenze con esponente intere caclolate in modo efficiente
- aggiunti prototipi di funzioni per impostazione tolleranze per superfici di Bezier.
2025-08-22 11:29:30 +02:00
Riccardo Elitropi fd382173c9 Include :
- In IntersParLinesSurfTm aggiunta estensione per intersezione con vettore di superfici TriMesh e aggiunto indice di superficie in IntLinStmInfo.
2025-08-04 14:43:24 +02:00
Dario Sassi efe425a243 Include :
- aggiornamento codice di protezione mensile.
2025-08-03 13:38:24 +02:00
Dario Sassi 97767e1945 Include :
- aggiornamento prototipi.
2025-07-22 08:33:02 +02:00
Riccardo Elitropi 53cf69101e Include :
- in EGkCalcPocketing aggiunto flag per calcolo delle regioni non svuotate alla funzione CalcPocketing
2025-07-14 10:20:13 +02:00
Dario Sassi d0292c7fcf Include :
- prime sistemazioni per offset superfici trimesh tramite Zmap.
2025-07-07 14:58:13 +02:00
Riccardo Elitropi f96c15de7e Include :
- aggiunte funzioni per calcolo di Zmap e TriMesh di Offset Fillet Thickening.
2025-07-04 12:58:17 +02:00
Riccardo Elitropi a8d98900e4 Include :
- in EGkSurfTriMesh aggiunte le funzioni per il calcolo dei Box delle Parts
2025-07-02 11:45:26 +02:00
Dario Sassi afa460495a Include :
- aggiornamento codice di protezione mensile.
2025-07-02 08:22:27 +02:00
Riccardo Elitropi 35dcbbf6d0 Include :
- aggiunte funzioni per Offset e FatOffset per un insieme di curve
- in MachiningConst aggiunto il tipo di finitura Pencil.
2025-06-25 15:47:06 +02:00
Riccardo Elitropi c0de49ff5c Include :
- aggiornamento prototipi IVolZmap.
2025-06-19 12:44:23 +02:00
Riccardo Elitropi 3cceff83c9 Include :
- ricollocazione funzione di Offset per superfici TriMesh chiuse.
2025-06-16 13:18:41 +02:00
Riccardo Elitropi 9c2ccb300e Include :
- Aggiunte funzioni per Offset di Stm chiuse.
2025-06-16 11:26:07 +02:00
Dario Sassi 172037d8a7 Include :
- aggiunta costante per nuovo tipo Plunge in lavorazione di mortasatura (MORTISE_PLUNGE_STEP_NO_SAFEZ = 10).
2025-06-11 19:22:49 +02:00
Dario Sassi 125cce1983 Include :
- aggiunte costanti per utensile di tipo Probe
- aggiunte costanti per operazione/lavorazione Probing.
2025-06-10 18:29:01 +02:00
Riccardo Elitropi ec4162e8be Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2025-06-09 12:17:35 +02:00
Riccardo Elitropi 0c72da8b1c Include :
- In CalcPocketing piccola modifica sui nomi dei parametri della funzione.
2025-06-09 12:14:21 +02:00
Dario Sassi 5d25f7917e Include :
- aggiornamento prototipi.
2025-06-08 12:15:09 +02:00
Dario Sassi c22d4bbcd9 Include :
- aggiornamento mensile codici protezione librerie.
2025-06-06 16:11:53 +02:00
Dario Sassi 6a355ccfe3 Include :
- aggiornamento prototipi.
2025-05-31 11:55:40 +02:00
Riccardo Elitropi 0e636829dd Include :
- modifica parametri per CalcPocketing.
2025-05-30 11:47:09 +02:00
Riccardo Elitropi 9f41af0b3c Include :
- in CalcPocketing aggiunta temp prop per casi SpiralCirle.
2025-05-27 14:28:47 +02:00
Riccardo Elitropi 410b6aa2b5 Include :
- Modifica prototipi alle funzioni per generare la FatCurve.
2025-05-27 08:29:44 +02:00
Daniele Bariletti 82cb2d7010 Include :
- aggiunta funzione per il riempimento di un box3D.
2025-05-20 10:06:47 +02:00
Riccardo Elitropi 47e48d2439 Include :
- Esposta funzione di smusso curve in CalcPocketing
- Aggiunto parametro MaxOptSize a CalcPocketing.
2025-05-15 16:25:32 +02:00
Dario Sassi 8a4c550e2e Include :
- aggiornamento prototipi.
2025-05-12 09:45:40 +02:00
Riccardo Elitropi 880967a813 Include :
- Aggiunta costante per lati aperti interni al grezzo per le sottocurve/curve
- Rimozione parametro in ModifyRawPart.
2025-05-09 16:13:04 +02:00
Dario Sassi 1fe12bac99 EgtInclude :
- aggiornamento mensile codici protezione librerie.
2025-05-02 19:10:17 +02:00
Dario Sassi 94fe68fd89 Include :
- corretto valore costante RUL_TYPE_ISOPAR_SMOOTH (deve essere 2 come altra costante cui fa riferimento).
2025-04-28 08:30:15 +02:00
Dario Sassi 9a37f9033a Include :
- aggiornamento prototipi.
2025-04-23 12:16:38 +02:00
Dario Sassi c77fb38e64 Merge commit 'bb029712a9805c52ec5b2d2735559be8e574ce42' 2025-04-23 10:54:29 +02:00
Riccardo Elitropi bb029712a9 Include :
- Aggiunte funzioni e definizioni per classe di calcolo per ottimizzazione lavorazioni
- Aggiunti vincoli per algoritmo ShortestPath
- Aggiunte funzioni per Executor.
2025-04-23 10:08:37 +02:00
Daniele Bariletti 2233bab91f Merge branch 'FasterBezier' 2025-04-14 11:22:09 +02:00
Daniele Bariletti 3d95e582ef Include:
- aggiunta funzione per una trimesh più fine per le bezier.
2025-04-14 11:20:32 +02:00
Daniele Bariletti ced3d3d75c Merge branch 'master' into FasterBezier 2025-04-11 16:03:33 +02:00
Dario Sassi 8f83a54310 Include :
- modifica solo estetica.
2025-04-08 13:07:16 +02:00
Daniele Bariletti 67fa641522 Merge remote-tracking branch 'origin/master' into FasterBezier 2025-04-08 12:55:03 +02:00
SaraP 3349069674 Include :
- aggiunto prototipo.
2025-04-08 08:35:14 +02:00
Dario Sassi 9a89e851d2 Include :
- aggiunto l'operatore == alla struttura SelData (per consentire confronti con funzioni STL direttamente sui contenitori).
2025-04-07 11:49:36 +02:00
Daniele Bariletti ffd321457b Merge branch 'master' into FasterBezier 2025-04-07 10:17:50 +02:00
Dario Sassi eb563b913d Include :
- aggiunte costanti per percorsi di lavorazione MCH_CL_SAFEIN e MCH_CL_SAFEOUT.
2025-04-03 09:12:29 +02:00
SaraP 38cbba2e35 Include :
- aggiornamento mensile codici protezione librerie.
2025-04-02 08:32:17 +02:00
Dario Sassi 36ce862054 Include :
- aggiornamento prototipi.
2025-03-28 20:16:47 +01:00
Dario Sassi c0beda4a1e Include :
- aggiornamento prototipi.
2025-03-27 19:20:18 +01:00
Daniele Bariletti a6ccbb0653 Merge remote-tracking branch 'origin/master' into FasterBezier 2025-03-27 16:01:31 +01:00
Dario Sassi 4fbd8d0b30 Merge branch 'master' of https://gitlab.steamware.net/egaltech/include 2025-03-27 15:23:03 +01:00
Dario Sassi 3db25e173f Include :
- aggiornamento prototipi.
2025-03-27 15:21:54 +01:00
Daniele Bariletti 8d2d58c455 Merge branch 'master' into FasterBezier 2025-03-27 10:24:19 +01:00
Daniele Bariletti 865e6e7090 - aggiunti prototipi per copie di pezzi di curve. 2025-03-27 10:22:20 +01:00
Daniele Bariletti df125db2ae - aggiunte funzioni per le copie di pezzi di curve. 2025-03-27 08:53:41 +01:00
Dario Sassi cf6b8e7572 Include :
- aggiornamento prototipi.
2025-03-26 11:24:48 +01:00
Dario Sassi f5724206d5 Include :
- aggiornamento prototipi.
2025-03-22 18:09:03 +01:00
SaraP 8bac9f6885 Include :
- aggiunto prototipo.
2025-03-13 15:21:53 +01:00
Riccardo Elitropi 3c26cd87cb Include :
- aggiunto parametro a funzione CalcPocketing.
2025-03-13 12:30:59 +01:00
Daniele Bariletti ef1b7e0952 Merge remote-tracking branch 'origin/HEAD' into FasterBezier 2025-03-12 09:40:43 +01:00
Daniele Bariletti 7b09526919 - nuova funzione per il calcolo dei punti di una bezier. 2025-03-11 14:50:02 +01:00
Riccardo Elitropi 9577094c3d Include :
- Semplificazione funzioni per CAvToolSilhouette e CAvToolSurfTm.
2025-03-11 11:16:07 +01:00
Riccardo Elitropi 9de2ae9561 Include :
- aggiunto parametro a CalcPocketing.
2025-03-04 17:41:02 +01:00
Dario Sassi c1a3773e7a Include :
- aggiornamento mensile codici protezione librerie.
2025-03-04 17:14:04 +01:00
Dario Sassi adebd1315b Include :
- aggiunta costante FT_PLY
- aggiornamento prototipi.
2025-03-02 19:48:08 +01:00
Dario Sassi 48c1ed4bcc Include :
- aggiornamento mensile codici protezione librerie.
2025-02-28 12:08:31 +01:00
Riccardo Elitropi 3bcc803f47 Include :
- aggiunto parametro in CalcPocketing
- Aggiunte definizioni in GeoCollection
- Aggiunta funzione per ottenere i Loop dalle Part per le TriMesh
- Aggiunta funzione di Test avanzata per le collisioni in CAvToolSurfTm.
2025-02-21 11:04:39 +01:00
SaraP 52b0802dfb Include :
- piccola correzione.
2025-02-17 14:58:31 +01:00
Daniele Bariletti f912437d87 Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2025-02-06 16:57:21 +01:00
Daniele Bariletti 6816497c5e - aggiunta funzione per offset massimo di una curva. 2025-02-06 16:57:17 +01:00
Dario Sassi eb75cfd6e3 Include :
- aggiunta costante per chiave info di uscite attivate in sottogruppo di CL.
2025-02-04 14:53:30 +01:00
Dario Sassi d5fcae0eec Include :
- aggiornamento prototipi per SetFixtureLink.
2025-01-31 08:58:44 +01:00
Riccardo Elitropi d9d4f8c6dc Include :
- Modifiche valori delle costanti per CurveComposite/Curve in CalcPocketing.
2025-01-31 08:43:57 +01:00
Dario Sassi 3ad00a017f Include :
- aggiornamento prototipi.
2025-01-25 12:10:25 +01:00
Dario Sassi 689197717c Include :
- aggiornamento prototipi.
2025-01-23 11:37:45 +01:00
SaraP 34888a1204 Include :
- aggiunti prototipi per camera prospettica.
2025-01-23 10:09:14 +01:00
Dario Sassi d2bc22a9c3 Include :
- aggiunta costante SURFFIN_SUB_PROJECT.
2025-01-20 10:49:57 +01:00
Dario Sassi 34e42aaece Include :
- aggiunte costanti per TYPE utensile (per ora Std o Float).
2025-01-20 08:35:36 +01:00
Dario Sassi d2f7b89b04 Include :
- unificata proiezione di curve su superfici trimesh e bezier.
2025-01-15 15:21:37 +01:00
Dario Sassi c47feff394 Include :
- aggiunta seconda versione di CalcNormal per normale in un punto di un triangolo come media baricentrica di quelle ai vertici.
2025-01-14 08:44:31 +01:00
Dario Sassi 4b73f70232 Include :
- migliorie e ottimizzazioni a ToString con interi.
2025-01-10 16:27:56 +01:00
Dario Sassi 6c57d57be1 Include :
- aggiornamento codici protezione librerie a 27
- aggiornamento ToString con uso std::to_chars.
2025-01-09 17:53:27 +01:00
Dario Sassi 481a86c2fa Include :
- modifiche a FromString con integer per uso libreria fast_float.
2025-01-06 18:12:49 +01:00
Dario Sassi fd4b84807f Include :
- modifiche a FromString con double per uso libreria fast_float.
2025-01-03 12:16:52 +01:00
Dario Sassi 59a4239226 Include :
- aggiornamento prototipi.
2024-12-23 12:02:03 +01:00
SaraP 3ecbb9b55a Include :
- aggiunti prototipi.
2024-12-19 10:50:03 +01:00
Dario Sassi bc0ac3c336 Include :
- aggiornamento prototipi.
2024-12-17 10:20:54 +01:00
SaraP 0dd9b62386 Include :
- aggiornamento prototipi per conservare la gerarchia nell'importazione 3MF.
2024-12-16 10:54:39 +01:00
Riccardo Elitropi 2549d720df Include :
- in CavSilhouette aggiunte funzioni per calcolo silhouette all'interno di una regione piana.
2024-12-12 11:50:56 +01:00
Dario Sassi 9d7e968fb7 Include :
- migliorie e correzioni a funzioni inline per accedere a variabili globali strutturate lua.
2024-12-05 17:38:36 +01:00
Dario Sassi 916c8bf793 Include :
- aggiornamento prototipi.
2024-12-04 15:00:55 +01:00
Dario Sassi a311b4bd0f Include :
- aggiunte costanti SURFFIN_SUB_Z_CONST e SURFFIN_SUB_OPTIMAL per tipo finitura superfici.
2024-12-04 10:07:33 +01:00
Dario Sassi 3b65b5c13a Include :
- aggiunta interfaccia IImportOff
- aggiornamento codici mensili di protezione delle librerie.
2024-11-29 18:56:58 +01:00
Riccardo Elitropi 5aebd3a873 Include:
- in GeoObjSave, aggiunta funzione di salvataggio.
2024-11-27 16:03:05 +01:00
Dario Sassi 32ede62dc8 Include :
- aggiunta costante per entità non lavorate
- aggiornamento prototipi.
2024-11-25 15:01:26 +01:00
Dario Sassi d35b0931e0 Include :
- aggiornamento mensile codici protezione librerie.
2024-11-04 08:29:47 +01:00
Dario Sassi 2fe3f8c68b Merge branch 'master' of https://gitlab.steamware.net/egaltech/include 2024-10-31 18:26:28 +01:00
Dario Sassi b6799c548c Include :
- aggiornamento prototipi
- aggiunte costanti per morse.
2024-10-31 18:25:39 +01:00
Riccardo Elitropi 83a983100a Include :
- in GeoObjSave, aggiunta funzione per salvataggio booleane tra Sfr.
2024-10-28 08:26:22 +01:00
Dario Sassi a9b4243c08 Include :
- aggiornamento prototipi.
2024-10-16 19:54:29 +02:00
SaraP 942b26229f Include :
- aggiunto prototipo.
2024-10-16 16:27:10 +02:00
Dario Sassi e41ede6cf4 Include :
- aggiornamento prototipi.
2024-10-15 17:33:32 +02:00
Dario Sassi 5831ac0c99 Include :
- aggiornamento prototipi.
2024-10-10 15:42:37 +02:00
Riccardo Elitropi 45229d2c52 Include :
in ConvertCurveToComposite vengono copiati anche i tempParams.
2024-10-08 12:54:48 +02:00
Dario Sassi 9ccea92086 Include :
- aggiunti prototipi di EgtBasis.
2024-10-06 18:17:57 +02:00
Daniele Bariletti 15c7bdca64 Merge branch 'MoreBezier' 2024-10-04 15:41:41 +02:00
Daniele Bariletti b385f19273 Merge remote-tracking branch 'origin/master' into MoreBezier 2024-10-04 15:22:43 +02:00
Daniele Bariletti 5525970ea1 EgtExecutor :
- aggiunto un parametro alla ExeCreateSurfBzSwept.
2024-10-04 15:22:18 +02:00
Dario Sassi 0deab361c2 Include :
- aggiornamento prototipi
-  aggiornamento mensile codici protezione librerie.
2024-10-01 15:21:48 +02:00
Dario Sassi f4d5bb773e Include :
- aggiornamento prototipi.
2024-09-23 13:01:39 +02:00
Dario Sassi f9f1e61a52 Include :
- aggiunte costanti per nuovi tipi di svuotature CONFORMAL.
2024-09-20 14:19:21 +02:00
SaraP 3c02ee2dc0 Include :
- aggiunti e modificati prototipi.
2024-09-19 16:29:04 +02:00
Riccardo Elitropi d3528e3660 Include :
- aggiunte costanti per CalcPocketing.
- aggiunta funzione di salvataggio su file.
2024-09-19 09:03:49 +02:00
Daniele Bariletti 0399218643 Include :
- aggiunta la funzione lua per SurfBzSwept
- aggiunta la funzione IsLine per CrvBez
- aggiunta la funzione InterpolatePointSetWithBezier
- aggiunte la SweptInPlane e Swept3d ( questa da implementare)
- modificata la CreateBySetOfCurves.
2024-09-17 17:31:14 +02:00
Dario Sassi 83cfdfc50e Include :
- aggiornamento mensile codici protezione librerie.
2024-09-05 17:39:08 +02:00
Daniele Bariletti fe30d8316d Merge branch 'MoreBezier' 2024-09-05 15:04:26 +02:00
Daniele Bariletti 9b3ee95672 Include :
- modifca agli argomenti della CalcRegionPolyLines.
2024-09-05 12:10:28 +02:00
Daniele Bariletti 67e90e56dd Merge branch 'master' into MoreBezier 2024-09-04 15:52:58 +02:00
Daniele Bariletti 41671e933f Merge branch 'MoreBezier' 2024-09-04 15:52:05 +02:00
Daniele Bariletti d5b6c5c278 Include :
- aggiunto un argomento alla CalcRegionPolyLines
- aggiunta la funzione CreateSurfBzByRegion Extrusion.
2024-09-04 15:51:32 +02:00
Riccardo Elitropi a9b5a7285f Include :
- In CalcPocketing aggiunto parametro Conformal One Way.
2024-09-02 09:19:10 +02:00
Daniele Bariletti e07eaed52b Merge branch 'MoreBezier' 2024-08-30 16:16:51 +02:00
Dario Sassi 398a083be6 Include :
- estese funzioni inline per leggere e scrivere variabili lua globali (ora anche tabelle complesse).
2024-08-30 10:10:51 +02:00
Daniele Bariletti 843f69c529 Merge branch 'master' into MoreBezier 2024-08-29 09:25:44 +02:00
Daniele Bariletti 415493927e Include :
- integrazione del codice per calcolo di una region.
2024-08-29 08:52:51 +02:00
Daniele Bariletti d87a1037e6 Include :
- modifica di parametri per la gestione dell'errore per le bezier.
2024-08-26 16:48:53 +02:00
Dario Sassi 9891ab1d29 Merge remote-tracking branch 'origin/master' 2024-08-23 09:20:47 +02:00
Daniele Bariletti 32b9ee9f24 Include :
- aggiunte e modificate funzioni per l'approssimazione delle curve di bezier.
2024-08-22 16:01:30 +02:00
Riccardo Elitropi 6944705676 Include :
- aggiornamento prototipo CalcPocketing.
2024-08-22 12:53:04 +02:00
Dario Sassi 00f5e38f61 Include :
- aggiornamento prototipi e costanti (per Mark).
2024-08-22 09:09:18 +02:00
Dario Sassi 020dca78bd Include :
- aggiornamento prototipi.
2024-08-21 14:39:39 +02:00
Riccardo Elitropi 65b3fe80d1 Include :
- in CalcPocketing, aggiunto parametro temporaneo di Smusso.
2024-08-06 15:07:06 +02:00
Dario Sassi c57e44db02 Include :
- unificazione funzioni AreSamePoint***
- aggiornamento mensile codici protezione librerie.
2024-08-06 14:41:25 +02:00
Daniele Bariletti 30a394960c Merge branch 'MoreBezier' 2024-08-05 10:08:10 +02:00
Daniele Bariletti 50df61a97a Merge branch 'master' into MoreBezier 2024-08-05 08:47:10 +02:00
Dario Sassi 992b4d1562 Include :
- aggiunta costante per parte iniziale del nome delle superfici che costituiscono l'utensile vero e proprio (per migliorare calcolo ingombri in link tra lavorazioni).
2024-07-31 20:24:29 +02:00
Riccardo Elitropi 74c9c8d04e Include :
- aggiunto parametro SURFROU_SUB_CONFORMAL_ZIGZAG.
2024-07-30 18:37:40 +02:00
Daniele Bariletti e51df31d13 Include :
- aggiunta di una funzione per la distanza tra punti.
2024-07-30 16:25:17 +02:00
Riccardo Elitropi dd0a2818ee Include :
- aggiunto parametro POCKET_CONFORMAL_ZIGZAG per CalcPocketing.
2024-07-30 13:59:51 +02:00
Daniele Bariletti d6e6531d92 Include :
- aggiunta di un enum per il calcolo della planarità di una superficie di Bezier.
2024-07-25 16:25:43 +02:00
Riccardo Elitropi 5919ebd8ec Include :
- aggiornamento prototipi.
2024-07-25 12:28:43 +02:00
Daniele Bariletti f0968a8d40 Include :
- aggiunte le skinned con le bezier.
2024-07-19 13:14:53 +02:00
Riccardo Elitropi ba10a0cd58 EgtInclude :
- aggiunte costanti in CalcPocketing.
2024-07-19 10:21:00 +02:00
Dario Sassi f81bb32e20 Include :
- aggiornamento prototipi (aggiunta classe Distanza Punto Regione).
2024-07-18 20:16:07 +02:00
Daniele Bariletti 7d0a641b6d Merge branch 'master' into MoreBezier 2024-07-17 16:22:56 +02:00
SaraP d026cc2db7 Include :
- aggiunto nuovo parametro per lavorazione WaterJet.
2024-07-17 14:22:23 +02:00
Daniele Bariletti b691854993 Include :
- aggiornamento prototipi.
2024-07-16 17:10:30 +02:00
Daniele Bariletti fe25f6e009 Include :
- aggiornamento prototipi.
2024-07-16 11:23:35 +02:00
Daniele Bariletti 1c088f9e50 Merge branch 'MoreBezier' 2024-07-15 17:30:42 +02:00
Daniele Bariletti 88bbc2580b Merge branch 'master' into MoreBezier 2024-07-15 17:08:12 +02:00
SaraP 2468e5c1c5 Include:
- aggiunto prototipo.
2024-07-15 10:25:16 +02:00
Riccardo Elitropi af000e7c37 EgtInclude :
- modifica parametri per funzione CalcPocketing.
2024-07-12 17:35:15 +02:00
Daniele Bariletti 9464b52c0b Merge branch 'master' into MoreBezier 2024-07-12 12:09:29 +02:00
Dario Sassi 6534f7bc32 Include :
- modifica estetica.
2024-07-12 08:46:27 +02:00
Riccardo Elitropi 5ba17dda50 Include :
- aggiornamento prototipi.
2024-07-10 12:32:43 +02:00
Daniele Bariletti 64e225c11c Merge branch 'master' into MoreBezier 2024-07-10 08:53:51 +02:00
Dario Sassi 26869b633d Include :
- aggiornamento prototipi.
2024-07-09 16:49:17 +02:00
Daniele Bariletti fef9dd4ae5 Include :
- aggiornamento modalità per le superfici rigate con le bezier.
2024-07-09 15:53:36 +02:00
SaraP 1c6d7ed4ff Include :
- aggiunti prototipi.
2024-07-09 10:25:09 +02:00
SaraP dec545da2e Include :
- aggiunto prototipo.
2024-07-05 15:08:41 +02:00
Daniele Bariletti c4241bfb88 Merge branch 'master' into MoreBezier 2024-07-03 10:34:31 +02:00
Dario Sassi 77b84fdd17 Include :
- aggiornamento prototipi.
2024-07-01 12:45:27 +02:00
Dario Sassi 9a8be81fd6 Include :
- aggiornamento mensile codici protezione librerie.
2024-07-01 10:45:50 +02:00
Dario Sassi e148024db1 Include :
- aggiornamento prototipi.
2024-06-29 18:42:26 +02:00
Dario Sassi 4ede19d2ee Include :
- a Vector3d aggiunta funzione inline GetRotate.
2024-06-27 12:53:17 +02:00
Dario Sassi b4ee9e2b42 Include :
- aggiornamento prototipi.
2024-06-26 17:38:10 +02:00
Dario Sassi 5644f837ed Include :
- aggiornamento prototipi.
2024-06-26 08:41:10 +02:00
Dario Sassi d731ea7164 Merge branch 'master' of https://gitlab.steamware.net/egaltech/include 2024-06-25 19:13:08 +02:00
Riccardo Elitropi ca4eb9f166 Include :
- modifica prototipo funzione CalcPocketing.
2024-06-25 13:27:38 +02:00
Dario Sassi 29bc318eaa Merge remote-tracking branch 'origin/Shell&Parts' 2024-06-24 16:28:29 +02:00
Daniele Bariletti fda893f8e2 Merge branch 'master' into MoreBezier 2024-06-19 10:11:07 +02:00
Dario Sassi 675c09e36b Include :
- aggiornamento prototipi.
2024-06-18 07:33:33 +02:00
Dario Sassi e5873f66ce Include :
- aggiornamento prototipi.
2024-06-17 07:10:50 +02:00
Riccardo Elitropi d2880b5167 Include :
- aggiunta funzioni in GeoObjSave.
2024-06-14 16:49:09 +02:00
Dario Sassi a933bea836 Include :
- aggiornamento prototipi.
2024-06-13 07:58:47 +02:00
Dario Sassi 9dbb6fac60 Include :
- aggiornamento prototipi.
2024-06-11 09:32:30 +02:00
Dario Sassi d3c44f2241 Include :
- negli oggetti HashGridsNd vietati costruttore di copia e assegnazione con copia di default.
2024-06-07 19:04:05 +02:00
Daniele Bariletti e6f0be1896 Merge branch 'master' into MoreBezier 2024-06-06 09:23:23 +02:00
Dario Sassi 5d2497bc9c Include :
- aggiornamento costanti di lavorazione.
2024-06-05 17:15:47 +02:00
Daniele Bariletti b4c5b74e8a Merge branch 'master' into MoreBezier 2024-06-04 09:58:20 +02:00
Dario Sassi 38b0309079 Include :
- aggiornamento parametri.
2024-06-03 09:09:30 +02:00
Dario Sassi 60f71c0601 Include :
- aggiornamento prototipi
- aggiornamento codice mensile di protezione librerie.
2024-06-03 08:08:36 +02:00
Daniele Bariletti b3f6bd148a Include :
- corretto un enum.
2024-05-30 16:51:58 +02:00
Dario Sassi 3ded442847 Include :
- aggiornamento prototipi.
2024-05-30 15:20:45 +02:00
Dario Sassi 756f13e6d7 Include :
- rese pubbliche costanti di tipo per calcolo svuotature.
2024-05-30 08:45:10 +02:00
Dario Sassi 127fbb4be6 Include :
- aggiornamento prototipi.
2024-05-29 18:55:46 +02:00
Daniele Bariletti f72ee830ff Include :
- aggiunte le funzioni per creare una rigata ( ruled ) come superficie Bezier.
- aggiunto l'enum per i tipi di rigata.
2024-05-28 16:21:26 +02:00
Riccardo Elitropi c40a9a64c0 Include :
- Aggiornamento prototipi.
2024-05-28 11:02:53 +02:00
Riccardo Elitropi 196e037ace Include :
- modifica classe DistPointSurfTm
2024-05-27 09:23:54 +02:00
Dario Sassi a6ccda3670 Include :
- aggiornamento prototipi.
2024-05-27 07:52:13 +02:00
Dario Sassi a19e0e63a5 Include :
- aggiunte costanti per sgrossatura superfici.
2024-05-24 19:00:33 +02:00
Daniele Bariletti fa91c10973 Include :
- cambiato il nome ad una funzione.
2024-05-24 12:12:19 +02:00
Dario Sassi ad970a39f5 Include :
- aggiornamento costanti per lavorazione 5 assi.
2024-05-23 11:47:28 +02:00
Dario Sassi 3d7308fbd3 Merge remote-tracking branch 'origin/master' 2024-05-23 11:37:49 +02:00
Daniele Bariletti 85e69405f1 Merge branch 'master' into MoreBezier 2024-05-23 09:59:12 +02:00
Daniele Bariletti f4bb934999 Include :
- piccola correzione.
2024-05-23 09:58:05 +02:00
Daniele Bariletti 129bff73f0 Include :
- cambiato nome alla funzione per mostrare i punti di controllo di una curva di Bezier.
2024-05-23 09:40:24 +02:00
Daniele Bariletti 43eb33cf34 Merge remote-tracking branch 'origin/SetSmoothAngle' 2024-05-23 09:32:48 +02:00
Daniele Bariletti 5b6d056eb9 Include :
- aggiunta la funzione SetSmoothAngle per superfici Trimesh.
2024-05-22 17:19:32 +02:00
Daniele Bariletti 88a4a91835 Include :
- aggiunta la funzione per ridurre di grado una curva Bezier.
2024-05-22 12:15:35 +02:00
Daniele Bariletti a78f73f1f1 Include :
- aggiunta la funzione per creare una surf bezier da rivoluzione ( revolve)
2024-05-22 10:38:41 +02:00
Dario Sassi 90d548b69d Include :
- aggiunta DistPointline.
2024-05-22 08:17:30 +02:00
Daniele Bariletti 37768dc318 Merge branch 'master' into MoreBezier 2024-05-21 15:49:47 +02:00
Daniele Bariletti 82e86fcdee Include :
- aggiunta la funzione di screwing con superfci di Bezier.
2024-05-21 15:40:05 +02:00
Dario Sassi 728d677ad6 Merge remote-tracking branch 'origin/Surf_Simp_Zmap' 2024-05-20 09:03:20 +02:00
Riccardo Elitropi 360c3c1ab1 Include :
- aggiunti prototipi.
2024-05-15 11:03:33 +02:00
Dario Sassi 062512cd2e Include :
- aggiunto include per DistLineLine.
2024-05-13 15:14:12 +02:00
Daniele Bariletti bdd2f34184 Include :
- aggiunte le funzioni per Bezier da FlatContour, da Region, da Extrusion e da Screwing.
2024-05-13 10:32:02 +02:00
Daniele Bariletti 987a84181d Include :
- spostata la funzione CalcRegionPolyLines.
2024-05-13 10:29:48 +02:00
Daniele Bariletti 9617f36230 Include :
- gestione del grado e della razionalità delle curve convertite in Bezier.
2024-05-13 10:28:20 +02:00
Daniele Bariletti 14fe1a913a Include :
- aggiunte le funziondi di SurfBez da estrusione e da FlatContour.
2024-05-09 15:11:59 +02:00
Dario Sassi 9d7207e898 Include :
- aggiornamento prototipi
- aggiunta funzione LuaSetParam per BOOLVECTOR.
2024-05-09 11:19:57 +02:00
Daniele Bariletti f1ce998815 Include :
- aggiunta funzione MakeRational per le curve di Bezier
- aggiunta funzione di conversione da ICurve a curva di Bezier semplice o composta.
2024-05-08 17:50:46 +02:00
Daniele Bariletti 58ce7bc753 Include :
- aggiunte le funzioni per proiettare curve su una superficie di Bezier.
2024-05-08 16:02:20 +02:00
Dario Sassi 7d922116ed Include :
- aggiornamento prototipi
- aggiunta funzione LuaSetParam per VCT3DVECTOR.
2024-05-08 15:52:21 +02:00
Daniele Bariletti c3d3c1e0bc Merge branch 'master' into MoreBezier 2024-05-08 08:52:35 +02:00
Daniele Bariletti c45d88829a Include :
- ArcToBezier ha come default la conversione da spirale a bezier di terzo grado 3.
2024-05-07 17:39:36 +02:00
Daniele Bariletti ad87ee5da8 Include :
- aggiunte le chiamate per le funzioni di creazioni di superfici Bezier da curve.
2024-05-07 17:38:32 +02:00
Daniele Bariletti 079e9e027a Include :
- aggiunte le funzioni per proiettare curve su una superficie di Bezier.
2024-05-07 14:51:49 +02:00
Daniele Bariletti 88fa15f216 Merge branch 'master' into MoreBezier 2024-05-07 10:32:35 +02:00
Daniele Bariletti 8efa4243b0 Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2024-05-07 10:04:06 +02:00
Daniele Bariletti 7c3a4e4ef8 Include :
- aggiunte le funzioni di conversione di curve in Bezier.
2024-05-07 09:52:23 +02:00
Dario Sassi a5ae1f617a Include :
- aggiornamento prototipi.
2024-05-02 09:31:12 +02:00
Dario Sassi fbbefba01e Include :
- aggiornamento mensile codici protezione librerie.
2024-04-30 16:56:08 +02:00
Daniele Bariletti ece9282f17 Merge branch 'master' into MoreBezier 2024-04-30 15:21:37 +02:00
Dario Sassi 95d828ea9a Include :
- eliminato utensile di tipo additive (si continua ad usare una fresa cilindrica)
2024-04-26 11:42:01 +02:00
Dario Sassi 08e53e8872 Include :
- aggiornamento prototipi.
2024-04-26 11:27:58 +02:00
Dario Sassi 6a315e2180 Merge branch 'VmillAdditivo' of https://gitlab.steamware.net/egaltech/include 2024-04-22 18:59:15 +02:00
Dario Sassi 2f821e645e Include :
- aggiornamento prototipi.
2024-04-22 15:30:22 +02:00
Riccardo Elitropi a55b658dd3 Include :
- aggiunta prototipi e costanti per Vmill additivo.
2024-04-22 13:25:02 +02:00
Dario Sassi a6fa2fd1eb Include :
- aggiornamento prototipi.
2024-04-19 17:54:24 +02:00
Dario Sassi abca64412e Include :
- piccole modifiche estetiche.
2024-04-19 08:48:19 +02:00
Daniele Bariletti 620ffdd3c8 Include :
- aggiunto il metodo IsPlanar per la SurfBezier.
2024-04-17 15:59:38 +02:00
Daniele Bariletti a8f06e3724 Include :
- funzione CalcPoles resa privata.
2024-04-17 15:15:38 +02:00
Riccardo Elitropi 85dbf13d9e Include :
- aggiunte funzioni per classe Vector3d.
2024-04-17 12:02:33 +02:00
Dario Sassi a98e3a91a8 Include :
- aggiornamenti per introduzione dei quaternioni.
2024-04-14 18:16:57 +02:00
Dario Sassi 7eae7b1771 Include :
- aggiornamento prototipi.
2024-04-13 17:45:12 +02:00
Daniele Bariletti a66f159deb Include :
- aggiunti parametri per ottenere la trimesh di una Bezier con precisione richiesta.
2024-04-11 17:38:45 +02:00
Daniele Bariletti a9e5a7ada7 Include :
- aggiunta header.
2024-04-11 12:27:28 +02:00
Dario Sassi 841fc508db Include :
- aggiornamento prototipi.
2024-04-11 00:15:49 +02:00
Daniele Bariletti bb7da199a9 Include :
- aggiunte makeUniform e OnWhichEdge come metodi per la classe Bezier.
2024-04-10 16:19:24 +02:00
Daniele Bariletti e821a72ac9 Update EgkSbzStandard.h 2024-04-10 07:56:08 +00:00
Daniele Bariletti 1dc36f32ee Update EgkIntersLineSurfBez.h 2024-04-10 07:53:55 +00:00
Daniele Bariletti 1a6f7ace71 Merge branch 'master' of https://gitlab.steamware.net/egaltech/Include 2024-04-10 09:24:50 +02:00
Daniele Bariletti db90c2e032 Include :
- resa accessibile la funzione GetSbType per ExtDim.
2024-04-10 09:24:45 +02:00
Dario Sassi ac2da7f310 Include :
- aggiunta costante KEY_ERR_NETKEY_NOTFOUND = 9
- aggiornamento prototipi.
2024-04-09 14:52:08 +02:00
Dario Sassi 3466eb44dd Include :
- aggiornamento prototipi.
2024-04-08 09:42:26 +02:00
Dario Sassi a0244abf46 Include :
- aggiornamento prototipi
- aggiunti prototipi per RotationMinimazingFrame e RotationXplaneFrame.
2024-04-05 16:50:05 +02:00
Dario Sassi 80b71e7d5d Merge remote-tracking branch 'origin/RMF' 2024-04-04 12:40:05 +02:00
Dario Sassi 2ae2d43e19 Include :
- aggiornamento prototipi.
2024-04-03 08:14:40 +02:00
Dario Sassi cda56e4f1e Include :
- aggiornamento prototipi.
2024-04-02 15:34:57 +02:00
Dario Sassi c9cd2e6436 Merge branch 'master' of https://gitlab.steamware.net/egaltech/include 2024-03-27 16:24:09 +01:00
Dario Sassi 954f7a602a Include :
- aggiornamento prototipi.
2024-03-27 16:23:55 +01:00
Daniele Bariletti 384eacf837 Merge branch 'CmdCreateSurfBezier' 2024-03-27 11:03:20 +01:00
Dario Sassi be18f4ceab Include :
- aggiornati prototipi.
2024-03-25 09:06:25 +01:00
Daniele Bariletti e9c515b1cb Merge branch 'master' into CmdCreateSurfBezier 2024-03-21 15:15:09 +01:00
Daniele Bariletti e4d75803ce Include :
- modificato il nome di una funzione per le Bezier.
2024-03-21 15:02:17 +01:00
SaraP cc2290fdde Include :
- aggiunti prototipi per Voronoi.
2024-03-15 16:04:03 +01:00
Riccardo Elitropi 736131c937 Include :
- modifica prototipi.
2024-03-15 13:18:01 +01:00
Riccardo Elitropi fa7dc81a0f Include :
- modifiche prototipi funzioni per creazioni superfici swept.
2024-03-15 10:28:30 +01:00
Dario Sassi 5870d60433 Include :
- aggiornamento prototipi.
2024-03-14 20:04:15 +01:00
Daniele Bariletti c709b90c74 Include :
- aggiunto il caso delle curve compo degeneri, composte da un solo punto.
2024-03-14 18:02:56 +01:00
SaraP b6947be971 Include :
- aggiornamento costanti per geometrie di lavorazione.
2024-03-14 10:29:44 +01:00
Daniele Bariletti 6cb8988822 Include :
- aggiunta la funzione getEdges3D per le sup di Bezier.
2024-03-14 10:05:25 +01:00
Dario Sassi 5424ebcfd1 Include :
- aggiornamento prototipi.
2024-03-13 09:27:48 +01:00
Dario Sassi 0c6127648c Include :
- aggiornamento prototipi.
2024-03-10 10:27:45 +01:00
Daniele Bariletti c259450b4f Merge branch 'master' into CmdCreateSurfBezier 2024-03-08 16:37:05 +01:00
Daniele Bariletti 3f86c9f333 Include :
- migliorate le funzioni per il recupero delle coordinate parametriche di un punto su una sup di bezier.
2024-03-08 16:35:01 +01:00
Daniele Bariletti a488d0248c Include :
- aggiunta di funzioni per il recupero della controimmagine di punti e curve su una superficie di Bezier.
2024-03-05 17:18:28 +01:00
Dario Sassi 6d06630d0a Include :
- aggiornamento mensile codici protezione librerie.
2024-03-02 11:53:49 +01:00
Daniele Bariletti b90644dcd2 Include :
- aggiornamento prototipi.
2024-02-28 10:32:41 +01:00
Daniele Bariletti eab80828f7 Merge branch 'master' into CmdCreateSurfBezier 2024-02-28 09:30:36 +01:00
Dario Sassi 52d64962cd Merge branch 'master' of https://gitlab.steamware.net/egaltech/include 2024-02-27 18:21:03 +01:00
Dario Sassi 3b1ffa6f4a Include :
- aggiornamento prototipi.
2024-02-27 18:19:14 +01:00
Daniele Bariletti c96642c373 Merge remote-tracking branch 'origin/HEAD' into CmdCreateSurfBezier 2024-02-27 16:40:29 +01:00
Daniele Bariletti 0f84188120 Include :
- aggiornamento prototitpi.
2024-02-27 16:40:13 +01:00
Daniele Bariletti 7a36482787 Include :
- aggiunta della funzione per il calcolo dei poli nelle sup di Bezier
- aggiunta la funzione per disegnare i triangoli nello spazio parametrico di una superficie Bezier.
2024-02-27 16:38:02 +01:00
Dario Sassi b3d5483564 Include :
- aggiornamento prototipi.
2024-02-26 15:16:24 +01:00
Daniele Bariletti 22c4c89a5b Include :
- aggiunta funzione per tagliare una superficie bezier con un piano.
2024-02-20 12:29:50 +01:00
Dario Sassi 270bb60b26 Include :
- aggiornamento prototipi.
2024-02-19 14:50:36 +01:00
Dario Sassi 98bcfa2230 Include :
- aggiornamento prototipi.
2024-02-16 08:41:32 +01:00
Daniele Bariletti 0b2c4b24b1 Merge branch 'Dist-Inters_Bezier' into CmdCreateSurfBezier 2024-02-14 14:43:41 +01:00
Daniele Bariletti c5da2d52f5 Include :
- aggiunta funzione per creazione di una sfera come superficie bezier.
2024-02-14 14:41:45 +01:00
Dario Sassi 447719df31 Include :
- aggiornamento prototipi.
2024-02-13 14:32:46 +01:00
Riccardo Elitropi 841523fb00 Merge commit '2ded5d72ed40e455fef44fe6065f73188ee97634' 2024-02-13 12:31:42 +01:00
Riccardo Elitropi 2ded5d72ed Include :
- piccola modifica.
2024-02-13 12:28:02 +01:00
Daniele Bariletti 93b180b129 Include :
- aggiunti i comandi per la chiamata da CAM dell'intersezione linea sup. Bezier.
2024-02-12 12:55:59 +01:00
Riccardo Elitropi fd9ad51978 Include :
- aggiunto algoritmo Dijkstra.
2024-02-08 13:04:40 +01:00
Daniele Bariletti 29c292b075 Include :
- aggiunta intersezione tra linea e superficie di Bezier.
2024-02-08 12:05:33 +01:00
Daniele Bariletti 63b93b0cbf Merge branch 'master' into Dist-Inters_Bezier 2024-02-06 16:20:47 +01:00
Daniele Bariletti ba18004154 Merge remote-tracking branch 'origin/HEAD' 2024-02-06 16:19:02 +01:00
Dario Sassi 09409e92e8 Include :
- aggiornamento mensile codici protezione librerie.
2024-02-02 15:58:26 +01:00
Dario Sassi 65b7c14f62 Include :
- aggiornamento prototipi.
2024-01-31 09:41:58 +01:00
SaraP d2f78740bb Include :
- aggiornamento prototipi.
2024-01-29 14:44:21 +01:00
Dario Sassi f7a3a6f00f Include :
- tolto Voronoi e aggiustamenti conseguenti.
2024-01-29 09:14:36 +01:00
Dario Sassi dc7a6fa31f Include :
- aggiornamento prototipi.
2024-01-25 18:17:54 +01:00
Dario Sassi 3ca2a64bfa Include :
- aggiornamento prototipi
- aggiunte costanti per tipo punto intersezione Linea-Curva.
2024-01-17 13:20:46 +01:00
Dario Sassi 8b52d7e8aa Include :
- aggiornamento prototipi.
2024-01-16 19:42:44 +01:00
Dario Sassi cf09eda254 Include :
- passaggio codici protezione librerie a 26.
2024-01-16 10:35:45 +01:00
SaraP cc370650c2 Include :
- aggiornamento prototipi.
2024-01-10 10:10:03 +01:00
Dario Sassi 00baa7c287 Include :
- aggiornamento parametri.
2024-01-09 18:28:33 +01:00
Dario Sassi 2682ad8772 Include :
- aggiornamento prototipi.
2024-01-02 16:01:29 +01:00
Dario Sassi 5367ebddbd Include :
- aggiornamento prototipi.
2023-12-29 13:08:44 +01:00
Dario Sassi 3d41f14559 Include :
- modifica al costruttore di default di CNurbsData per impostare il nuovo flag bClamped a true (per compatibilità con precedente stato).
2023-12-18 19:53:57 +01:00
Dario Sassi ebedf43bd4 Include :
- aggiornamento prototipi.
2023-12-18 09:31:54 +01:00
Dario Sassi 239fac2dc9 Include :
- ora il Logger è di default thread safe.
2023-12-15 16:16:09 +01:00
Dario Sassi 9e8267d228 Include :
- aggiornamento prototipi.
2023-12-14 20:27:14 +01:00
Dario Sassi 0c6aed9ec2 Include :
- aggiornamento prototipi.
2023-12-14 12:01:07 +01:00
Dario Sassi 766a2a1cb1 Include :
- aggiornamento prototipi.
2023-12-11 10:15:39 +01:00
Dario Sassi d699fb9fea Include :
- aggiornamento codici di protezione mensili.
2023-12-01 16:43:45 +01:00
Riccardo Elitropi 7510267e1f Include :
- modifica prototipi.
2023-11-29 11:53:17 +01:00
Dario Sassi f3bfeac4db Include :
- aggiornamento prototipo.
2023-11-28 11:11:27 +01:00
Dario Sassi e491ffa45f Merge commit '42f3b9007dffad03e4a05ddaca4298f5534749f2' 2023-11-28 11:02:07 +01:00
Riccardo Elitropi 42f3b9007d EgtInclude :
- Aggiunta funzione CalcZigZagInfill e aggiornamento prototipi.
2023-11-27 12:23:15 +01:00
Dario Sassi 2018c11a8d Include :
- aggiornamento prototipi.
2023-11-24 15:36:32 +01:00
Dario Sassi de1bfee540 Include :
- aggiornamento prototipi.
2023-11-24 12:50:55 +01:00
SaraP a645be8f7d Include :
- aggiunti prototipi per Voronoi
- aggiornamento prototipi.
2023-11-23 13:01:37 +01:00
Dario Sassi 2e2f69b252 Include :
- aggiornamento prototipi.
2023-11-23 10:47:24 +01:00
Dario Sassi 6e3503fde5 Include :
- a classe PolyLine aggiunte proprietà TempProp e relative funzioni Set/Get.
2023-11-22 20:21:06 +01:00
Riccardo Elitropi 3925a97c84 Include :
- aggiunta funzione CalcPocketing.
2023-11-20 11:14:02 +01:00
Dario Sassi 137103f92c Include :
- aggiornamento prototipi.
2023-11-16 19:00:42 +01:00
Dario Sassi 841dddf047 Include :
- sistemazione prototipi per passaggio import/export 3dm da Exchange a Exch3dm.
2023-11-14 19:11:35 +01:00
SaraP ddd7f858a4 Include :
- aggiornamento prototipi.
2023-11-14 15:07:33 +01:00
Dario Sassi 435a89b2b9 Include :
- aggiornamento prototipi.
2023-11-13 08:50:09 +01:00
Daniele Bariletti 14fd82f322 Include :
- aggiunta la funzione Import3dm.
2023-11-08 10:49:14 +01:00
Daniele Bariletti a1151f8df2 EgtExchange :
- tolto parametro dScaleFactor ad Import3dm.
2023-11-08 10:03:08 +01:00
Daniele Bariletti 68256f2456 Merge branch '3dm_import+trim&mesh' 2023-11-07 17:58:54 +01:00
Daniele Bariletti 6dacd30dbd Include :
- aggiunto il flag clamped durante la conversione da superfici e
curve nurbs a Bezier.
2023-11-07 17:56:17 +01:00
Dario Sassi 5c074aec89 Include :
- aggiornamento prototipi
- aggiornato codice di protezione mensile librerie.
2023-11-03 17:19:34 +01:00
Dario Sassi be6efe65e4 Include :
- aggiornamento prototipi.
2023-10-28 18:12:16 +02:00
Dario Sassi 36541aea66 Include :
- aggiornamento prototipi.
2023-10-24 13:08:20 +02:00
Daniele Bariletti 26d46c8b26 Include :
- aggiunta dell'Export 3dm.
2023-10-23 14:31:07 +02:00
Daniele Bariletti dd74337190 Include :
- aggiunta la possibilità di mostrare le curve di trim sullo spazio parametrico
per le superfici di Bezier.
2023-10-23 10:31:17 +02:00
Daniele Bariletti a6e5145392 Include :
- gestione sup NURBS periodiche
- aggiunta note e cambio nomi.
2023-10-17 12:05:52 +02:00
Riccardo Elitropi 25e52f23d6 Include :
- aggiornamento prototipi.
2023-10-10 13:38:09 +02:00
Dario Sassi 7335a703cf Include :
- aggiornamento prototipi.
2023-10-09 12:59:50 +02:00
Riccardo Elitropi 0c2643af4e Include :
- aggiunta funzione SubtractProjectedFacesOnStmFace
- aggiornamento prototipo GetSilhouette.
2023-10-04 12:15:32 +02:00
Dario Sassi e4795d9eba Include :
-  aggiornato codice di protezione mensile librerie.
2023-10-02 16:04:09 +02:00
Daniele Bariletti 8471ff37ba Include :
- aggiunte coordinate U e V ai vertici delle TriMesh.
2023-09-26 12:21:42 +02:00
Daniele Bariletti 5eb4c65db4 Include :
- aggiunta del 3dm Export.
2023-09-21 17:07:18 +02:00
Daniele Bariletti 2425304b2e Include :
- introdotto l'uso della grafica di default per le ExtDim importate
da 3dm.
2023-09-21 14:44:53 +02:00
Daniele Bariletti 4a81b0fc94 Include :
- aggiunte coordinate U e V ai vertici delle TriMesh.
2023-09-18 10:43:11 +02:00
Dario Sassi 0a0f0daaff Include :
- aggiornamento prototipi.
2023-09-18 08:15:38 +02:00
Dario Sassi 773f812bb8 Include :
- aggiornamento prototipi.
2023-09-12 16:00:58 +02:00
Dario Sassi 598d06443e Include :
- aggiornamento e nuovi prototipi.
2023-09-11 10:34:25 +02:00
Daniele Bariletti 8728e4f41f Merge branch 'Bezier_trim&mesh' into 3dm_import 2023-08-29 09:59:12 +02:00
Daniele Bariletti 76d9ed12de Include :
- aggiunta funzione per la conversione da superfici NURBS a Bezier.
2023-08-29 09:58:32 +02:00
Daniele Bariletti a3793abcd8 Merge branch 'master' into 3dm_import 2023-08-29 09:49:43 +02:00
Dario Sassi 921f764bb6 Include :
- aggiornamento prototipi.
2023-08-27 18:28:40 +02:00
Dario Sassi 6962aeced4 Include :
- aggiunto P_INVALID Pointt3d non definito (IsValid ritorna false)
- aggiunto V_INVALID Vector3d non definito (IsValid ritorna false)
- aggiunte raccolte di puntatori a ICurveLine.
2023-08-23 16:45:11 +02:00
Dario Sassi fdb7209f3f Include :
- piccola modifica in Clamp.
2023-08-19 11:46:50 +02:00
Dario Sassi 63c5f940d8 Include :
- aggiornamento prototipi.
2023-08-04 13:20:38 +02:00
Daniele Bariletti c58190b9e7 Merge branch 'master' into 3dm_import 2023-08-03 11:18:46 +02:00
Daniele Bariletti 53a5e52d47 Include:
- aggiunta importazione di file 3dm.
2023-08-03 11:17:50 +02:00
Dario Sassi e563bbf302 Include :
- in ConvertCurveToComposite aggiunta gestione estrusione, spessore e proprietà temporanee.
2023-08-03 11:16:48 +02:00
Dario Sassi 11bbd29d0e Include :
- aggiornato codice di protezione mensile.
2023-08-02 20:03:19 +02:00
DarioS 1599910667 Include :
- aggiornamento prototipi.
2023-07-28 11:21:56 +02:00
DarioS 340d11635d Include :
- aggiunta funzione inline ConvertCurveToComposite.
2023-07-21 15:10:21 +02:00
DarioS e62a6036a4 Include :
- aggiunta funzione IsGlobFrame.
2023-07-20 20:44:22 +02:00
DarioS 3106768d39 Include :
- aggiornamento prototipi.
2023-07-10 11:12:33 +02:00
DarioS 880f586861 Include :
- aggiornamento prototipi.
2023-07-07 17:01:09 +02:00
Daniele Bariletti 33cd3aa310 Merge remote-tracking branch 'origin/HEAD' into Bezier_trim&mesh 2023-06-21 09:39:17 +02:00
Daniele Bariletti e2295d2502 Include :
- aggiunte funzioni per superfici di bezier.
2023-06-21 09:39:09 +02:00
DarioS 328f571012 Include :
- aggiornamento prototipi
- aggiunta costante per verifica collisione in simulazione con poliedri.
2023-06-19 08:00:20 +02:00
DarioS 129dfa412e Include :
- aggiornamento prototipi
- aggiornamento codici mensili di protezione.
2023-06-05 08:05:31 +02:00
DarioS 6f0c532456 Include :
- aggiornamento prototipi.
2023-05-30 17:06:21 +02:00
DarioS b3d649894f Include :
- aggiornamenti per migliore gestione delle chiavi di rete.
2023-05-30 10:22:05 +02:00
Daniele Bariletti bb030c1008 Merge remote-tracking branch 'origin/HEAD' into Bezier_trim&mesh 2023-05-19 14:58:43 +02:00
DarioS 05243da50b Include :
- a plane3d aggiunto metodo per calcolo piano dati tre punti.
2023-05-16 09:38:26 +02:00
DarioS 80423a1eb6 Include :
- modifiche a Vector3d e Point3d per controllo validità coordinate (isfinite).
2023-05-15 14:51:16 +02:00
DarioS 0318d44994 Include :
- aggiornamento prototipi
- a BBox3d aggiunto metodo Overlaps per box con orientamento diverso.
2023-05-14 11:54:02 +02:00
DarioS bd7ed86369 Include :
- aggiornamento prototipi.
2023-05-08 08:24:58 +02:00
DarioS 65fee5de7b Include :
- aggiornamento codici protezione librerie per cambio mese.
2023-05-03 09:36:31 +02:00
DarioS f614420f37 Include :
- miglioramenti interfacce di Vector3d, Point3d e Frame3d
- aggiunta costante ICurve::APL_SPECIAL_INT per nuovo tipo di approssimazione (come SPéECIAL ma con almeno tre punti per curve non rettilinee).
2023-04-24 15:38:36 +02:00
DarioS 9144694734 Include :
- aggiornamento prototipi Vector3d.
2023-04-17 09:28:48 +02:00
DarioS 4c7cf4d0e4 Include :
- aggiornamento prototipi.
2023-04-11 19:34:08 +02:00
DarioS 6c983db4d7 Merge remote-tracking branch 'origin/ExtDimension_Angular' 2023-04-08 11:26:54 +02:00
DarioS d497fb30cd Include :
- aggiornamento codici protezione librerie per cambio mese.
2023-04-03 08:53:01 +02:00
Daniele Bariletti 3f05d8d830 Include :
- aggiunti prototipi per quotature.
2023-03-31 14:58:44 +02:00
DarioS 56a10b43b4 Include :
- miglioramento e irrobustimento a PtrOwner.
2023-03-27 20:39:06 +02:00
DarioS 0288f200f8 Include :
- modifiche a PtrOwner, aggiunta nuova Set.
2023-03-27 18:42:01 +02:00
DarioS c8370b9dc7 Include :
- aggiornato codice di controllo versione.
2023-03-06 08:31:58 +01:00
DarioS 19c2dffa32 Include :
- aggiornamento prototipi.
2023-02-27 17:05:17 +01:00
DarioS 4df6b4f95d Include :
- migliorati test IsXplus,... su Vector3d.
2023-02-27 08:14:24 +01:00
DarioS cb3f9075e6 Include :
- aggiornamento prototipi.
2023-02-20 09:14:45 +01:00
DarioS 992073ea80 Include :
- aggiunti prototipi di nuove funzioni.
2023-02-10 11:26:25 +01:00
DarioS 90bac7ecf8 Include :
- aggiornamento chiavi di protezione.
2023-02-09 10:38:14 +01:00
DarioS d4e0b3183f Include :
- modifica estetica.
2023-02-06 08:12:08 +01:00
SaraP 886e63f1a0 Include :
- aggiornamento prototipo.
2023-02-01 09:35:59 +01:00
SaraP 7f4d123700 Include :
- aggiunto prototipo.
2023-01-31 15:36:12 +01:00
DarioS 29078f12d3 Include :
- aggiornamento prototipi.
2023-01-30 09:41:37 +01:00
DarioS 040b3cc386 Include :
- nessuna modifica sostanziale.
2023-01-18 08:41:27 +01:00
DarioS 997bf37426 Include :
- aggiornamento prototipi
- aggiunte raccolte di coppie double-string.
2023-01-17 11:29:05 +01:00
DarioS 70b81d88c3 Include :
- aggiornamento prototipi.
2023-01-11 14:53:58 +01:00
DarioS e1d42cfca8 Include :
- aggiornamento chiavi di protezione.
2023-01-03 08:58:20 +01:00
DarioS 70ae6c8cb2 Include :
- aggiornamento prototipi.
2022-12-28 19:40:48 +01:00
SaraP dc8b2e1fe6 Include :
- aggiornamento prototipi.
2022-12-28 14:19:02 +01:00
DarioS 58efb93e9f Include :
- aggiornamento prototipi.
2022-12-20 16:36:32 +01:00
DarioS 532a6f487c Include :
- aggiornamento prototipi.
2022-12-12 14:43:18 +01:00
DarioS d50bf5e4da Include :
- aggiornamento a dicembre codici protezione librerie.
2022-12-05 08:10:46 +01:00
SaraP f6429f8361 Include :
- aggiunti prototipi.
2022-12-01 11:25:17 +01:00
DarioS 6b3d3a39be Include :
- aggiornamento prototipi.
2022-11-14 08:38:43 +01:00
DarioS 46baa14304 Include :
- aggiornamento prototipi.
2022-11-08 16:43:19 +01:00
DarioS 9357f8fef0 Include :
- aggiornamento prototipi.
2022-11-04 19:18:37 +01:00
DarioS 966a4ff0c1 Include :
- cambio sottoversione mensile per librerie
- aggiornamento prototipi.
2022-11-02 15:10:03 +01:00
DarioS 4f82bc1a6a Include :
- aggiornamento prototipi.
2022-10-26 18:07:42 +02:00
DarioS 35982ecc97 Include :
- aggiornamento prototipi.
2022-10-24 08:44:59 +02:00
Riccardo Elitropi b6b36bbf01 Merge commit '24c1414752e47a903d107978105b888142d61a98' 2022-10-20 15:59:27 +02:00
Riccardo Elitropi 24c1414752 Include :
- aggiornamento e aggiunta prototipi ExportThreeJS.
2022-10-20 15:56:25 +02:00
Riccardo Elitropi d54c5cf3a3 Merge commit '63bc857b1c48c08a7ac6163263ecba3e0304fd66' into ThreeJS 2022-10-20 15:54:17 +02:00
DarioS 63bc857b1c Include :
- aggiornamento codici protezione librerie.
2022-10-12 10:20:31 +02:00
SaraP c79c941621 Include :
- aggiunto prototipo.
2022-10-11 16:07:35 +02:00
DarioS b52b844857 Include :
- aggiornamento prototipi.
2022-10-11 12:29:26 +02:00
Riccardo Elitropi c0073596fd Include :
- Aggiornamento prototipi.
2022-10-05 12:07:17 +02:00
riccardo.elitropi 8f3a5c8d67 Merge commit 'dd73dd57835d5e30b2acd4c52aef1e3c8a9e3894' into ThreeJS 2022-09-29 12:10:39 +02:00
DarioS dd73dd5783 Include :
- aggiornamento prototipi.
2022-09-24 18:47:59 +02:00
riccardo.elitropi b5a1142d5b Merge commit 'd28f8a10387f2cd9904dc381cb22a2f97ac997ed' into ThreeJS 2022-09-20 17:39:51 +02:00
riccardo.elitropi 0dd071a104 Merge remote-tracking branch 'origin/ThreeJS' into ThreeJS 2022-09-20 17:39:05 +02:00
riccardo.elitropi b7f2dadcfe Include:
- Modifica ExeExportThreeJS terzo parametro controllo gruppi.
2022-09-20 17:37:25 +02:00
DarioS d28f8a1038 Include :
- aggiornamento prototipi.
2022-09-13 08:11:43 +02:00
DarioS 12e3b407b0 Include :
- aggiornamento prototipi.
2022-09-09 08:43:50 +02:00
DarioS 0b696228d7 Include :
- aggiornamento codici protezione librerie.
2022-09-07 12:51:31 +02:00
SaraP 50b03f11cd Merge commit '78974f80452ac1db8bb16cdcb12e2d5f8cd5d24f' into ThreeJS 2022-09-01 11:14:58 +02:00
DarioS 78974f8045 Include :
- aggiornamento prototipi.
2022-08-31 15:35:39 +02:00
DarioS acfea6a2d3 Include :
- aggiornamento parametri
- in Frame3d possibilità di costruire e resettare un riferimento come non inizializzato
- in Vector3d aggiunte IsX, IsY, IsZ.
2022-08-29 07:15:53 +02:00
riccardo.elitropi 3e045e7ab6 Merge commit '2c8ffb13ea3e40e4d5bb8dcc579e5032843bd737' into ThreeJS 2022-08-26 14:38:08 +02:00
DarioS 2c8ffb13ea Include :
- aggiunto valore opzionale 0.5 a Media di Vector3d.
2022-08-26 14:37:16 +02:00
riccardo.elitropi 83e545b466 Merge commit '34599980fe4eb9723fc7ab7ce497d9bd1c4a3e04' into ThreeJS 2022-08-26 14:16:59 +02:00
riccardo.elitropi ea621cd6e0 Include :
- modifica parametri funzioni exportThreejs.
2022-08-26 14:16:36 +02:00
DarioS 34599980fe Include :
- aggiornamento prototipi
- in Vector3d aggiunte funzioni GetToLoc, GetToGlob e GetLocToLoc per avere subito una copia del trasformato
- in Point3d aggiunte funzioni GetToLoc, GetToGlob e GetLocToLoc per avere subito una copia del trasformato.
2022-08-23 11:45:50 +02:00
riccardo.elitropi 27b9bc8979 Include :
- Aggiunti prototipi per ExportThreeJS.
2022-08-22 17:52:29 +02:00
DarioS ebae52195d Include :
- aggiornati prototipi
- in Vector3d migliorate ParallCompo e OrthoCompo.
2022-08-21 16:23:35 +02:00
DarioS b46df7b95e Include :
- aggiornamento prototipi.
2022-08-17 19:22:56 +02:00
SaraP 72e5aac4bd Include :
- aggiunti e aggiornati prototipi.
2022-07-28 16:23:50 +02:00
SaraP d7d3cd1d2f Include :
- aggiunto prototipo.
2022-07-15 17:05:18 +02:00
DarioS 2724fd7da2 Include :
- aggiornamento prototipi.
2022-07-06 17:47:14 +02:00
DarioS 34e4585cb0 Include :
- aggiornata chiave protezione librerie per cambio mese.
2022-07-04 11:01:58 +02:00
SaraP 2e15477a6b Include :
- aggiunto prototipo.
2022-06-24 17:14:04 +02:00
DarioS 281385250b Include :
- aggiunte costanti per plunge in lavorazione Mortising
- migliorate funzioni Clamp.
2022-06-19 11:06:02 +02:00
DarioS cc7de574ea Include :
- aggiornata per cambio mese chiave protezione librerie.
2022-06-06 06:59:44 +02:00
DarioS a783f67a1c Include :
- aggiunte costanti per quata di base del tool holder.
2022-05-29 16:41:08 +02:00
DarioS 9bcc1d8208 Include :
- aggiunto prototipo.
2022-05-26 14:43:47 +02:00
SaraP 88d7bd76dd Include :
- aggiunto prototipo.
2022-05-25 16:45:49 +02:00
DarioS 6243972bb8 Include :
- aggiornamento prototipi.
2022-05-17 08:27:21 +02:00
DarioS c8faafd10b Include :
- modifiche a SetValInNotes, GetValInNotes e RemoveValInNotes per gestire chiavi con terminatore ':' già compreso a cui non aggiungere '='.
2022-05-14 11:41:40 +02:00
DarioS c0cecd27ae Include :
- aggiunta e aggiornamento prototipi.
2022-05-09 19:30:13 +02:00
SaraP 5457f4707c Include :
- aggiornamento prototipi.
2022-05-09 11:35:17 +02:00
SaraP 87fdfbb689 Include :
- aggiunta HashGrids1d
- aggiunti prototipi.
2022-05-09 09:11:18 +02:00
DarioS 32a81f8382 Include :
- aggiornamento mensile codici di protezione librerie.
2022-05-01 17:56:44 +02:00
DarioS 6c196ca7da Include :
- modifiche a SaveGeoObj per casi di oggetto non valido.
2022-04-26 08:14:43 +02:00
DarioS 70c3695ee9 Include :
- aggiunto prototipo.
2022-04-22 08:54:27 +02:00
DarioS 799548c17c Include :
- aggiornamento prototipi.
2022-04-19 11:16:50 +02:00
DarioS f1fb3a8b6a Include :
- aggiunti prototipi.
2022-04-13 14:54:01 +02:00
DarioS b0d59a283d Include :
- aggiunti prototipi.
2022-04-12 18:04:15 +02:00
DarioS c87395f201 Include :
- aggiunto prototipo.
2022-04-11 19:16:40 +02:00
DarioS a8339f748a Include :
- aggiunti prototipi.
2022-04-11 16:28:34 +02:00
DarioS 329e56cb9f Include :
- aggiornamento prototipi.
2022-04-11 08:36:34 +02:00
DarioS b552b36101 Include :
- aggiunto flag EIBFLAG_TRIM_WITH_OUTLINE per BTL.
2022-04-04 17:27:25 +02:00
DarioS 7e4d8cb061 Include :
- aggiornata versione per librerie a 2404.
2022-04-03 12:01:17 +02:00
DarioS 9e53331f4b Include :
- aggiornamento prototipi.
2022-03-24 10:52:07 +01:00
DarioS 3c9fee6701 Include :
- aggiornamento prototipi.
2022-03-24 08:55:02 +01:00
DarioS 53d855cc80 Include :
- aggiunta a Color funzione Intensify.
2022-03-20 18:49:13 +01:00
DarioS f7a539ff8d Include :
- aggiornata versione per librerie a 2403.
2022-03-08 19:46:29 +01:00
DarioS ab8ec30e29 Include :
- sistemato minuscole/maiuscole.
2022-02-26 17:46:21 +01:00
DarioS 8640bd9ec0 Include :
- aggiornamento mensile versione minima per librerie
- aggiunte costanti per lavorazione di svuotatura ad epicicli per lucidatura.
2022-02-04 18:25:22 +01:00
DarioS b2f7fa94f7 Include :
- aggiornamento prototipi.
2022-01-24 08:19:39 +01:00
DarioS afd6dd7855 Include :
- aggiunta costante EIBFLAG_OUTL_FLAT_POS = 64 per flag import BTL.
2022-01-18 11:37:38 +01:00
DarioS 1767036299 Include :
- aggiornati prototipi.
2022-01-17 15:12:05 +01:00
DarioS bbb6ff6ef5 Include :
- aggiunta costante per formato OBJ.
2022-01-14 12:05:59 +01:00
DarioS 80588fc44c Include :
- aggiornamento prototipi.
2022-01-10 18:36:46 +01:00
DarioS e994bb1836 Include :
- sistemazione prototipi.
2022-01-09 15:18:34 +01:00
DarioS 103ea771b4 Include :
- aggiornamento prototipi
- aggiunta costante MAX_EDGE_LEN_STD per triangolazioni di facce di SurfTriMesh.
2022-01-07 10:04:05 +01:00
DarioS d07cc81d83 Include :
- aggiornamento prototipi.
2022-01-04 08:09:19 +01:00
DarioS 4733040613 Include :
- aggiornamento prototipi.
2021-12-20 18:58:25 +01:00
DarioS 236a0625f4 Include :
- aggiornamento prototipi.
2021-12-19 18:42:27 +01:00
DarioS 13b742e04d Include :
- aggiornamento prototipi.
2021-12-08 16:46:44 +01:00
DarioS 45b3427c76 Include :
- aggiornamento prototipi.
2021-12-06 16:50:41 +01:00
DarioS d374680aec Include :
- aggiornamento prototipi.
2021-12-02 11:24:54 +01:00
DarioS d16330e412 Include :
- aggiornamento prototipi.
2021-12-01 10:13:36 +01:00
DarioS b5b2490da5 Include :
- aggiornamento prototipi.
2021-11-16 06:28:03 +01:00
DarioS 130d508286 Include :
- aggiornamento prototipi.
2021-11-02 08:24:15 +01:00
LorenzoM bcae60ae52 Spostate funzioni polyline nel file opportuno 2021-10-27 18:03:40 +02:00
DarioS 4a2e309b61 Include :
- aggiornamento prototipi.
2021-10-24 18:05:04 +02:00
DarioS 34b4b82928 Include :
- aggiornati codici di protezione per cambio mese.
2021-10-04 09:01:00 +02:00
DarioS 3223628941 Include :
- correzioni a Triangle3d e Triangle3dEx per funzioni bool che non restituivano il risultato
- a Triangle3d aggiunta funzione GetSqMinHeight (quadrato della minima altezza del triangolo)
- aggiornamento prototipi.
2021-09-26 16:33:54 +02:00
DarioS 8e8709682f Include :
- aggiunte costanti MILL_LI_TG_PERP e MILL_LO_PERP_TG.
2021-09-25 12:51:20 +02:00
DarioS 7178e9715c Include :
- aggiunta costante parametro utensile TPA_CORE (spessore anima di lama).
2021-09-16 12:45:49 +02:00
DarioS 4628b536ba Include :
- aggiornamento prototipi.
2021-09-13 15:52:10 +02:00
167 changed files with 5167 additions and 831 deletions
+57
View File
@@ -0,0 +1,57 @@
//----------------------------------------------------------------------------
// EgalTech 2024-2025
//----------------------------------------------------------------------------
// File : EBsAPI.h Data : 24.01.25 Versione : 2.7a1
// Contenuto : API (application programming interface).
//
//
//
// Modifiche : 05.10.24 DS Creazione modulo.
// 24.01.25 DS Aggiunta gestione messaggi.
//
//----------------------------------------------------------------------------
#pragma once
#define NOMINMAX
#include <windows.h>
//----------------------- Macro per import/export ----------------------------
#undef EGTBASIS_EXPORT
#if defined( I_AM_EGTBASIS) // da definirsi solo nella DLL
#define EGTBASIS_EXPORT __declspec( dllexport)
#else
#define EGTBASIS_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif
// API
// Protezione
EGTBASIS_EXPORT BOOL __stdcall EgtSetKey( const wchar_t* wsKey) ;
EGTBASIS_EXPORT BOOL __stdcall EgtGetKeyLevel( int nProd, int nVer, int nLev, int* pnKLev) ;
EGTBASIS_EXPORT BOOL __stdcall EgtGetKeyOptions( int nProd, int nVer, int nLev, unsigned int* pnOpt1, unsigned int* pnOpt2) ;
EGTBASIS_EXPORT BOOL __stdcall EgtGetKeyLeftDays( int* pnLeftDays) ;
EGTBASIS_EXPORT BOOL __stdcall EgtGetKeyAssLeftDays( int* pnAssLeftDays) ;
EGTBASIS_EXPORT BOOL __stdcall EgtGetKeyOptLeftDays( int* pnOptLeftDays) ;
// Liberazione memoria blocchi dati ritornati (di solito per stringhe)
EGTBASIS_EXPORT BOOL __stdcall EgtFreeMemory( void* pMem) ;
// Messaggi
EGTBASIS_EXPORT BOOL __stdcall EgtLoadMessages( const wchar_t* wsMsgFilePath) ;
EGTBASIS_EXPORT const wchar_t* __stdcall EgtGetMsg( int nMsg) ;
// Logger
EGTBASIS_EXPORT BOOL __stdcall EgtInitLogger( int nDebug, const wchar_t* wsLogFile) ;
EGTBASIS_EXPORT BOOL __stdcall EgtOutLog( const wchar_t* wsMsg, int nDebugLevel) ;
// Ini File
EGTBASIS_EXPORT BOOL __stdcall EgtGetStringUtf8FromIni( const wchar_t* wsSec, const wchar_t* wsKey,
const wchar_t* wsDef, wchar_t*& wsVal, const wchar_t* wsIniFile) ;
EGTBASIS_EXPORT BOOL __stdcall EgtWriteStringUtf8ToIni( const wchar_t* wsSec, const wchar_t* wsKey,
const wchar_t* wsVal, const wchar_t* wsIniFile) ;
#ifdef __cplusplus
}
#endif
+73
View File
@@ -0,0 +1,73 @@
//----------------------------------------------------------------------------
// EgalTech 2023-2023
//----------------------------------------------------------------------------
// File : EE3DllMain.h Data : 14.11.23 Versione : 2.5k2
// Contenuto : Prototipi funzioni generali della DLL.
//
//
//
// Modifiche : 14.11.23 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include <string>
class ILogger ;
//----------------------- Macro per import/export ----------------------------
#undef EE3_EXPORT
#if defined( I_AM_EE3) // da definirsi solo nella DLL
#define EE3_EXPORT __declspec( dllexport)
#else
#define EE3_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
// E' necessaria l'interfaccia in C per caricare queste funzioni dinamicamente
extern "C" {
// restituisce la versione della Dll
EE3_EXPORT const char* GetEE3Version( void) ;
// permette di impostare il logger per la Dll
EE3_EXPORT void SetEE3Logger( ILogger* pLogger) ;
// imposta la chiave di protezione
EE3_EXPORT void SetEE3Key( const std::string& sKey) ;
// imposta se chiave hardware di rete
EE3_EXPORT void SetEE3NetHwKey( bool bNetHwKey) ;
}
//-----------------------------------------------------------------------------
#include "/EgtDev/Include/EGnStringUtils.h"
#include "/EgtDev/Include/EgtILogger.h"
#include "/EgtDev/Include/EgtKeyCodes.h"
#include "/EgtDev/Include/SELkKeyProc.h"
//-----------------------------------------------------------------------------
// Test della chiave per caricare la DLL
inline bool
TestKeyForEE3( const std::string& sKey, int nKeyOpt, ILogger* pLogger)
{
// verifico la chiave e le opzioni
unsigned int nOpt1, nOpt2 ;
int nOptExpDays ;
int nRet = GetKeyOptions( sKey, KEY_BASELIB_PROD, KEY_BASELIB_VER, KEY_BASELIB_LEV,
nOpt1, nOpt2, nOptExpDays) ;
if ( nRet != KEY_OK && ! EqualNoCase( sKey, "EE3Base")) {
if ( nRet != KEY_OK) {
std::string sErr = "Error on Key (EE3/" + ToString( nRet) + ")" ;
LOG_ERROR( pLogger, sErr.c_str()) ;
return false ;
}
if ( ( nOpt1 & ( KEYOPT_EEX_INPBASE|KEYOPT_EEX_EXPBASE)) == 0 ||
( nKeyOpt != 0 && ( nOpt1 & nKeyOpt) == 0) ||
nOptExpDays < GetCurrDay()) {
std::string sErr = "Warning on Key (EE3/OPT)" ;
LOG_ERROR( pLogger, sErr.c_str()) ;
return false ;
}
}
return true ;
}
+40
View File
@@ -0,0 +1,40 @@
//----------------------------------------------------------------------------
// EgalTech 2023
//----------------------------------------------------------------------------
// File : EE3Export3dm.h Data : 21.09.23 Versione :
// Contenuto : Dichiarazione della interfaccia IExport3dm.
//
//
//
// Modifiche : 21.09.23 DB Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EExExportConst.h"
#include <string>
//----------------------- Macro per import/export ----------------------------
#undef EE3_EXPORT
#if defined( I_AM_EE3) // da definirsi solo nella DLL
#define EE3_EXPORT __declspec( dllexport)
#else
#define EE3_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
class __declspec( novtable) IExport3dm
{
public :
virtual ~IExport3dm( void) {}
virtual bool SetOptions( int nFilter) = 0 ;
virtual bool Export( IGeomDB* pGDB, int nId, const std::string& sFile) = 0 ;
} ;
//-----------------------------------------------------------------------------
extern "C" {
EE3_EXPORT IExport3dm* CreateExport3dm(void) ;
}
+39
View File
@@ -0,0 +1,39 @@
//----------------------------------------------------------------------------
// EgalTech 2023
//----------------------------------------------------------------------------
// File : EE3Import3dm.h Data : 26.06.23 Versione : 2.5f1
// Contenuto : Dichiarazione della interfaccia IImport3dm.
//
//
//
// Modifiche : 26.06.23 DB Creazione modulo.
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include <string>
//----------------------- Macro per import/export ----------------------------
#undef EE3_EXPORT
#if defined( I_AM_EE3) // da definirsi solo nella DLL
#define EE3_EXPORT __declspec( dllexport)
#else
#define EE3_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
class __declspec( novtable) IImport3dm
{
public :
virtual ~IImport3dm( void) {}
virtual bool Import( const std::string& sFile, IGeomDB* pGDB, int nIdGroup,
double dTextHeight = 2.0, double dExtLine = 5.0, double dArrLen = 5.0, double dTextDist = 2.0,
bool bLenIsMM = true, int nDecDig = -2, std::string sFont = "ModernPropS.Nfe") = 0 ;
} ;
//-----------------------------------------------------------------------------
extern "C" {
EE3_EXPORT IImport3dm* CreateImport3dm( void) ;
}
+14 -10
View File
@@ -1,23 +1,27 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2020-2020 // EgalTech 2020-2026
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EExBeamConst.h Data : 30.08.20 Versione : 2.2i1 // File : EExBeamConst.h Data : 23.01.26 Versione : 3.1a2
// Contenuto : Dichiarazione delle costanti per travi e pareti con BTL. // Contenuto : Dichiarazione delle costanti per travi e pareti con BTL.
// //
// //
// //
// Modifiche : 30.08.20 DS Creazione modulo. // Modifiche : 30.08.20 DS Creazione modulo.
// // 04.04.22 DS Aggiunto EIBFLAG_TRIM_WITH_OUTLINE.
// 23.01.26 DS Aggiunto EIBFLAG_PARTOFFSET.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
#pragma once #pragma once
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
enum EImBtlFlag { EIBFLAG_NONE = 0x0000, enum EImBtlFlag { EIBFLAG_NONE = 0x0000,
EIBFLAG_FLAT_POS = 0x0001, // pezzi di piatto (prevale sul successivo) EIBFLAG_FLAT_POS = 0x0001, // pezzi di piatto (prevale sul successivo)
EIBFLAG_VERT_POS = 0x0002, // pezzi in verticale EIBFLAG_VERT_POS = 0x0002, // pezzi in verticale
EIBFLAG_SPECIAL_TRIM = 0x0004, // trim speciale per pareti EIBFLAG_SPECIAL_TRIM = 0x0004, // trim speciale per pareti
EIBFLAG_TS3_POS = 0x0008, // pezzi come in TechnoEssetre (prevale sui precedenti POS) EIBFLAG_TS3_POS = 0x0008, // pezzi come in TechnoEssetre (prevale sui precedenti POS)
EIBFLAG_SORT = 0x0010, // ordina i pezzi nel DB in base al nome EIBFLAG_SORT = 0x0010, // ordina i pezzi nel DB in base al nome
EIBFLAG_USEUATTR = 0x0020} ; // utilizza i parametri utente U per modificare la geometria delle features EIBFLAG_USEUATTR = 0x0020, // utilizza i parametri utente U per modificare la geometria delle features
EIBFLAG_OUTL_FLAT_POS = 0x0040, // pezzi secondo outline o di piatto (prevale sui precedenti POS)
EIBFLAG_TRIM_WITH_OUTLINE = 0x0080, // esegui il trim delle feature con l'outline (se presente)
EIBFLAG_PARTOFFSET = 0x0100} ; // gestione geometrica del PARTOFFSET
+17 -7
View File
@@ -1,20 +1,22 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2020-2021 // EgalTech 2020-2022
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EExBeamMgr.h Data : 01.06.21 Versione : 2.2f1 // File : EExBeamMgr.h Data : 06.07.22 Versione : 2.4g2
// Contenuto : Dichiarazione della interfaccia IBeamMgr. // Contenuto : Dichiarazione della interfaccia IBeamMgr.
// //
// //
// //
// Modifiche : 30.08.20 DS Creazione modulo. // Modifiche : 30.08.20 DS Creazione modulo.
// 01.06.21 DS Aggiunti parametri vsUAtt per Process. // 01.06.21 DS Aggiunti parametri vsUAtt per Process.
// 06.07.22 DS Aggiunta GetSideData.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
#pragma once #pragma once
#include "/EgtDev/Include/EgkGeomDB.h" #include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EExBeamConst.h" #include "/EgtDev/Include/EExBeamConst.h"
#include "/EgtDev/Include/EgtFunPtrType.h"
#include <string> #include <string>
//----------------------- Macro per import/export ---------------------------- //----------------------- Macro per import/export ----------------------------
@@ -32,6 +34,7 @@ class __declspec( novtable) IBeamMgr
virtual ~IBeamMgr( void) {} virtual ~IBeamMgr( void) {}
virtual bool Init( IGeomDB* pGDB, int nFlag = 0) = 0 ; virtual bool Init( IGeomDB* pGDB, int nFlag = 0) = 0 ;
virtual bool SetFlag( int nFlag) = 0 ;
virtual int CreatePart( void) = 0 ; virtual int CreatePart( void) = 0 ;
virtual bool SetPart( int nPartId) = 0 ; virtual bool SetPart( int nPartId) = 0 ;
virtual bool ErasePart( void) = 0 ; virtual bool ErasePart( void) = 0 ;
@@ -40,17 +43,24 @@ class __declspec( novtable) IBeamMgr
virtual bool SetPartName( const std::string& sName) = 0 ; virtual bool SetPartName( const std::string& sName) = 0 ;
virtual bool SetPartCount( int nCount) = 0 ; virtual bool SetPartCount( int nCount) = 0 ;
virtual bool SetPartBox( double dLength, double dHeight, double dWidth, bool bUpdate = true) = 0 ; virtual bool SetPartBox( double dLength, double dHeight, double dWidth, bool bUpdate = true) = 0 ;
virtual bool GetSideData( int nSide, Frame3d& frRef, double& dLength, double& dWidth, double& dHeight) = 0 ;
virtual bool ShowFacesName( bool bShow) = 0 ;
virtual bool ShowLoadingSide( bool bShow, bool bFromLeft) = 0 ;
virtual int AddProcess( int nGroup, int nProc, int nSide, const std::string& sDes, int nProcId, virtual int AddProcess( int nGroup, int nProc, int nSide, const std::string& sDes, int nProcId,
const Frame3d& frRef, const DBLVECTOR& vdPar, const std::string& sPar, const STRVECTOR& vsUAtt, bool bUpdate = true) = 0 ; const Frame3d& frRef, const DBLVECTOR& vdPar, const std::string& sPar, const STRVECTOR& vsUAtt,
int nCrvId, int nCrv2Id, bool bUpdate = true) = 0 ;
virtual int ModifyProcess( int nGeomId, int nGroup, int nProc, int nSide, const std::string& sDes, int nProcId, virtual int ModifyProcess( int nGeomId, int nGroup, int nProc, int nSide, const std::string& sDes, int nProcId,
const Frame3d& frRef, const DBLVECTOR& vdPar, const std::string& sPar, const STRVECTOR& vsUAtt, bool bUpdate = true) = 0 ; const Frame3d& frRef, const DBLVECTOR& vdPar, const std::string& sPar, const STRVECTOR& vsUAtt,
int nCrvId, int nCrv2Id, bool bUpdate = true) = 0 ;
virtual bool EraseProcess( int nGeomId, bool bUpdate = true) = 0 ; virtual bool EraseProcess( int nGeomId, bool bUpdate = true) = 0 ;
virtual bool EnableProcess( int nGeomId, bool bEnable, bool bUpdate = true) = 0 ; virtual bool EnableProcess( int nGeomId, bool bEnable, bool bUpdate = true) = 0 ;
virtual bool CalcAllSolids( bool bShow, bool bRecalc, pcfProcEvents pFun = nullptr) = 0 ;
virtual bool ShowAllSolids( bool bShow, pcfProcEvents pFun = nullptr) = 0 ;
virtual bool CalcSolid( int nPartId, bool bRecalc = false) = 0 ; virtual bool CalcSolid( int nPartId, bool bRecalc = false) = 0 ;
virtual int GetSolid( int nPartId) const = 0 ; virtual int GetSolid( int nPartId) const = 0 ;
virtual bool ShowSolid( int nPartId, bool bShow) = 0 ; virtual bool ShowSolid( int nPartId, bool bShow) = 0 ;
virtual bool GetBuildingIsOn( void) const = 0 ; virtual bool GetBuildingIsOn( int nAssGrpId) const = 0 ;
virtual bool ShowBuilding( bool bShow) = 0 ; virtual bool ShowBuilding( int nAssGrpId, bool bShow) = 0 ;
} ; } ;
+2
View File
@@ -34,6 +34,8 @@ extern "C" {
EEX_EXPORT void SetEExLogger( ILogger* pLogger) ; EEX_EXPORT void SetEExLogger( ILogger* pLogger) ;
// imposta la chiave di protezione // imposta la chiave di protezione
EEX_EXPORT void SetEExKey( const std::string& sKey) ; EEX_EXPORT void SetEExKey( const std::string& sKey) ;
// imposta se chiave hardware di rete
EEX_EXPORT void SetEExNetHwKey( bool bNetHwKey) ;
} }
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgnCmdExecutor.h" #include "/EgtDev/Include/EGnCmdExecutor.h"
class IGeomDB ; class IGeomDB ;
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgkGeomDB.h" #include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EExExportConst.h" #include "/EgtDev/Include/EExExportConst.h"
#include <string> #include <string>
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgkGeomDB.h" #include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EExExportConst.h" #include "/EgtDev/Include/EExExportConst.h"
#include <string> #include <string>
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgkGeomDB.h" #include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EExExportConst.h" #include "/EgtDev/Include/EExExportConst.h"
#include <string> #include <string>
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgkGeomDB.h" #include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EExExportConst.h" #include "/EgtDev/Include/EExExportConst.h"
#include <string> #include <string>
+42
View File
@@ -0,0 +1,42 @@
//----------------------------------------------------------------------------
// EgalTech 2022-2022
//----------------------------------------------------------------------------
// File : EExExportThreeJS.h Data : 22.10.22 Versione : 2.4j1
// Contenuto : Dichiarazione della interfaccia IExportStl.
//
//
//
// Modifiche : 22.10.22 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EExExportConst.h"
#include <string>
#include "/EgtDev/Include/EGrScene.h"
//----------------------- Macro per import/export ----------------------------
#undef EEK_EXPORT
#if defined( I_AM_EEX) // da definirsi solo nella DLL
#define EEX_EXPORT __declspec( dllexport)
#else
#define EEX_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
class __declspec( novtable) IExportThreeJS
{
public:
virtual ~IExportThreeJS( void) {}
virtual bool SetOptions( int nFilter) = 0 ;
virtual bool Export( IGeomDB* pGDB, int nId, IEGrScene* pScene, bool bUdm, const std::string& sFile) = 0 ;
} ;
//-----------------------------------------------------------------------------
extern "C" {
EEX_EXPORT bool SetThreeJSLibDir( const std::string& sThreeJSLibDir) ;
EEX_EXPORT IExportThreeJS* CreateExportThreeJS( void) ;
}
+5 -2
View File
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgkGeomDB.h" #include "/EgtDev/Include/EGkGeomDB.h"
#include <string> #include <string>
//----------------------- Macro per import/export ---------------------------- //----------------------- Macro per import/export ----------------------------
@@ -29,10 +29,13 @@ class __declspec( novtable) IImport3MF
{ {
public : public :
virtual ~IImport3MF( void) {} virtual ~IImport3MF( void) {}
virtual bool Import( const std::string& sFile, IGeomDB* pGDB, int nIdGroup) = 0 ; virtual bool Import( const std::string& sFile, IGeomDB* pGDB, int nIdGroup, int nFlag = 0) = 0 ;
} ; } ;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
extern "C" { extern "C" {
EEX_EXPORT IImport3MF* CreateImport3MF( void) ; EEX_EXPORT IImport3MF* CreateImport3MF( void) ;
} }
enum EIm3MFFlag { EI3FLAG_NONE = 0x0000,
EI3FLAG_KEEP_GROUPS = 0x0001} ;
+1
View File
@@ -37,5 +37,6 @@ class __declspec( novtable) IImportBtl
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
extern "C" { extern "C" {
EEX_EXPORT bool SetBtlAuxDir( const std::string& sBtlAuxDir) ; EEX_EXPORT bool SetBtlAuxDir( const std::string& sBtlAuxDir) ;
EEX_EXPORT bool SetBtlLuaData( const std::string& sLuaLibsDir, const std::string& sLuaLastRequire) ;
EEX_EXPORT IImportBtl* CreateImportBtl( void) ; EEX_EXPORT IImportBtl* CreateImportBtl( void) ;
} }
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgkGeomDB.h" #include "/EgtDev/Include/EGkGeomDB.h"
#include <string> #include <string>
//----------------------- Macro per import/export ---------------------------- //----------------------- Macro per import/export ----------------------------
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgkGeomDB.h" #include "/EgtDev/Include/EGkGeomDB.h"
#include <string> #include <string>
//----------------------- Macro per import/export ---------------------------- //----------------------- Macro per import/export ----------------------------
+1 -1
View File
@@ -14,7 +14,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgkGeomDB.h" #include "/EgtDev/Include/EGkGeomDB.h"
#include <string> #include <string>
+38
View File
@@ -0,0 +1,38 @@
//----------------------------------------------------------------------------
// EgalTech 2024-2024
//----------------------------------------------------------------------------
// File : EExImportOff.h Data : 28.11.24 Versione : 2.6k2
// Contenuto : Dichiarazione della interfaccia IImportOff.
//
//
//
// Modifiche : 28.11.24 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include <string>
//----------------------- Macro per import/export ----------------------------
#undef EEK_EXPORT
#if defined( I_AM_EEX) // da definirsi solo nella DLL
#define EEX_EXPORT __declspec( dllexport)
#else
#define EEX_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
class __declspec( novtable) IImportOff
{
public :
virtual ~IImportOff( void) {}
virtual bool Import( const std::string& sFile, IGeomDB* pGDB, int nIdGroup, double dScaleFactor = 1) = 0 ;
} ;
//-----------------------------------------------------------------------------
extern "C" {
EEX_EXPORT IImportOff* CreateImportOff( void) ;
}
+38
View File
@@ -0,0 +1,38 @@
//----------------------------------------------------------------------------
// EgalTech 2025-2025
//----------------------------------------------------------------------------
// File : EExImportPly.h Data : 28.02.25 Versione : 2.7b2
// Contenuto : Dichiarazione della interfaccia IImportPly.
//
//
//
// Modifiche : 28.02.25 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
#include <string>
//----------------------- Macro per import/export ----------------------------
#undef EEK_EXPORT
#if defined( I_AM_EEX) // da definirsi solo nella DLL
#define EEX_EXPORT __declspec( dllexport)
#else
#define EEX_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
class __declspec( novtable) IImportPly
{
public :
virtual ~IImportPly( void) {}
virtual bool Import( const std::string& sFile, IGeomDB* pGDB, int nIdGroup, double dScaleFactor = 1) = 0 ;
} ;
//-----------------------------------------------------------------------------
extern "C" {
EEX_EXPORT IImportPly* CreateImportPly( void) ;
}
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgkGeomDB.h" #include "/EgtDev/Include/EGkGeomDB.h"
#include <string> #include <string>
//----------------------- Macro per import/export ---------------------------- //----------------------- Macro per import/export ----------------------------
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgkGeomDB.h" #include "/EgtDev/Include/EGkGeomDB.h"
#include <string> #include <string>
//----------------------- Macro per import/export ---------------------------- //----------------------- Macro per import/export ----------------------------
+5 -2
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2014-2014 // EgalTech 2014-2023
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkAngle.h Data : 14.07.14 Versione : 1.5g2 // File : EGkAngle.h Data : 10.02.23 Versione : 2.5b1
// Contenuto : Dichiarazione funzioni per gestione angoli. // Contenuto : Dichiarazione funzioni per gestione angoli.
// //
// //
@@ -27,3 +27,6 @@ EGK_EXPORT double AngleNearAngle( double dAngDeg, double dAngRefDeg) ;
EGK_EXPORT double DiffAngle( double dAng1Deg, double dAng2Deg) ; EGK_EXPORT double DiffAngle( double dAng1Deg, double dAng2Deg) ;
EGK_EXPORT double MediaAngle( double dAng1Deg, double dAng2Deg, double dCoeff) ; EGK_EXPORT double MediaAngle( double dAng1Deg, double dAng2Deg, double dCoeff) ;
EGK_EXPORT bool AngleInSpan( double dAngDeg, double dAngRefDeg, double dAngSpanDeg) ; EGK_EXPORT bool AngleInSpan( double dAngDeg, double dAngRefDeg, double dAngSpanDeg) ;
EGK_EXPORT bool AngleInRange( double dAngDeg, double dAngMinDeg, double dAngMaxDeg) ;
EGK_EXPORT bool AdjustAngleInSpan( double& dAngDeg, double dAngRefDeg, double dAngSpanDeg) ;
EGK_EXPORT bool AdjustAngleInRange( double& dAngDeg, double dAngMinDeg, double dAngMaxDeg) ;
+1 -1
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2015-2015 // EgalTech 2015-2015
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkArcCenTgCurvePnt.h Data : 15.03.15 Versione : 1.6c2 // File : EGkArcCenTgCurvePnt.h Data : 15.03.15 Versione : 1.6c2
// Contenuto : Dichiarazione funzioni per calcolo arco dati centro, // Contenuto : Dichiarazione funzioni per calcolo arco dati centro,
// tangente a curva e punto vicino a finale. // tangente a curva e punto vicino a finale.
// //
+1 -1
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2015-2015 // EgalTech 2015-2015
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkArcPntDirTgCurve.h Data : 13.03.15 Versione : 1.6c2 // File : EGkArcPntDirTgCurve.h Data : 13.03.15 Versione : 1.6c2
// Contenuto : Dichiarazione funzioni per calcolo arco dato punto iniziale // Contenuto : Dichiarazione funzioni per calcolo arco dato punto iniziale
// direzione e tangente a curva. // direzione e tangente a curva.
// //
+6 -3
View File
@@ -1,13 +1,14 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2014-2015 // EgalTech 2014-2023
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkArcSpecial.h Data : 15.03.15 Versione : 1.6c2 // File : EGkArcSpecial.h Data : 04.08.23 Versione : 2.5h1
// Contenuto : Dichiarazione funzioni per calcolo speciale archi. // Contenuto : Dichiarazione funzioni per calcolo speciale archi.
// //
// //
// //
// Modifiche : 12.06.14 DS Creazione modulo. // Modifiche : 12.06.14 DS Creazione modulo.
// // 20.12.22 DS Aggiunta GetArc2PCN.
// 04.08.23 DS Aggiunta GetArc2PNB.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -27,4 +28,6 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
EGK_EXPORT ICurve* GetArc2PD( const Point3d& ptStart, const Point3d& ptEnd, double dDirStartDeg) ; EGK_EXPORT ICurve* GetArc2PD( const Point3d& ptStart, const Point3d& ptEnd, double dDirStartDeg) ;
EGK_EXPORT ICurve* GetArc2PVN( const Point3d& ptStart, const Point3d& ptEnd, const Vector3d& vtDirS, const Vector3d& vtN) ; EGK_EXPORT ICurve* GetArc2PVN( const Point3d& ptStart, const Point3d& ptEnd, const Vector3d& vtDirS, const Vector3d& vtN) ;
EGK_EXPORT ICurve* GetArc2PNB( const Point3d& ptStart, const Point3d& ptEnd, const Vector3d& vtN, double dBulge) ;
EGK_EXPORT ICurve* GetArc3P( const Point3d& ptStart, const Point3d& ptOther, const Point3d& ptEnd, bool bCirc) ; EGK_EXPORT ICurve* GetArc3P( const Point3d& ptStart, const Point3d& ptOther, const Point3d& ptEnd, bool bCirc) ;
EGK_EXPORT ICurveArc* GetArc2PCN( const Point3d& ptStart, const Point3d& ptEnd, const Point3d& ptNearCen, const Vector3d& vtN) ;
+57 -9
View File
@@ -1,19 +1,22 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2014 // EgalTech 2013-2023
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkBBox3d.h Data : 14.01.14 Versione : 1.5a4 // File : EGkBBox3d.h Data : 12.05.23 Versione : 2.5e3
// Contenuto : Dichiarazione della classe axis aligned bounding box BBox3d. // Contenuto : Dichiarazione della classe axis aligned bounding box BBox3d.
// //
// //
// //
// Modifiche : 14.01.13 DS Creazione modulo. // Modifiche : 14.01.13 DS Creazione modulo.
// // 17.08.22 DS Aggiunte GetDimX, GetDimY, GetDimZ.
// 12.05.23 DS Aggiunta Overlaps con Box su riferimento.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
#pragma once #pragma once
#include "/EgtDev/Include/EGKPoint3d.h" #include "/EgtDev/Include/EGkPoint3d.h"
#include "/EgtDev/Include/EGkFrame3d.h"
#include <vector>
//----------------------- Macro per import/export ---------------------------- //----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT #undef EGK_EXPORT
@@ -46,7 +49,7 @@ class EGK_EXPORT BBox3d
{ m_ptMin = Point3d( +INFINITO, +INFINITO, +INFINITO) ; { m_ptMin = Point3d( +INFINITO, +INFINITO, +INFINITO) ;
m_ptMax = Point3d( -INFINITO, -INFINITO, -INFINITO) ; } m_ptMax = Point3d( -INFINITO, -INFINITO, -INFINITO) ; }
void Set( const Point3d& ptP) void Set( const Point3d& ptP)
{ m_ptMin = ptP ; m_ptMax = ptP ; } { m_ptMin = ptP ; m_ptMax = ptP ; }
void Set( double dX, double dY, double dZ) void Set( double dX, double dY, double dZ)
{ m_ptMin = Point3d( dX, dY, dZ) ; m_ptMax = m_ptMin ; } { m_ptMin = Point3d( dX, dY, dZ) ; m_ptMax = m_ptMin ; }
void Set( const Point3d& ptP1, const Point3d& ptP2) ; void Set( const Point3d& ptP1, const Point3d& ptP2) ;
@@ -64,6 +67,8 @@ class EGK_EXPORT BBox3d
void Add( const Point3d& ptP) ; void Add( const Point3d& ptP) ;
void Add( double dX, double dY, double dZ) ; void Add( double dX, double dY, double dZ) ;
void Add( const BBox3d& b3B) ; void Add( const BBox3d& b3B) ;
void Add( const std::vector<Point3d>& vPnt) { for ( const Point3d& pt: vPnt){
Add( pt) ; }}
void Expand( double dDelta) ; void Expand( double dDelta) ;
void Expand( double dDeltaX, double dDeltaY, double dDeltaZ) ; void Expand( double dDeltaX, double dDeltaY, double dDeltaZ) ;
const Point3d& GetMin( void) const const Point3d& GetMin( void) const
@@ -72,6 +77,9 @@ class EGK_EXPORT BBox3d
{ return m_ptMax ; } { return m_ptMax ; }
bool GetMinMax( Point3d& ptMin, Point3d& ptMax) const ; bool GetMinMax( Point3d& ptMin, Point3d& ptMax) const ;
bool GetMinDim( Point3d& ptMin, double& dDimX, double& dDimY, double& dDimZ) const ; bool GetMinDim( Point3d& ptMin, double& dDimX, double& dDimY, double& dDimZ) const ;
double GetDimX( void) const ;
double GetDimY( void) const ;
double GetDimZ( void) const ;
bool GetCenterExtent( Point3d& ptCenter, Vector3d& vtExtent) const ; bool GetCenterExtent( Point3d& ptCenter, Vector3d& vtExtent) const ;
bool GetCenter( Point3d& ptCenter) const ; bool GetCenter( Point3d& ptCenter) const ;
bool GetRadius( double& dRad) const ; bool GetRadius( double& dRad) const ;
@@ -86,10 +94,11 @@ class EGK_EXPORT BBox3d
bool EnclosesXY( const Point3d& ptP) const ; bool EnclosesXY( const Point3d& ptP) const ;
bool Encloses( const BBox3d& b3Box) const ; bool Encloses( const BBox3d& b3Box) const ;
bool EnclosesXY( const BBox3d& b3Box) const ; bool EnclosesXY( const BBox3d& b3Box) const ;
bool Overlaps( const BBox3d& b3B) const ; bool Overlaps( const BBox3d& b3Box) const ;
bool OverlapsXY( const BBox3d& b3B) const ; bool OverlapsXY( const BBox3d& b3Box) const ;
bool FindIntersection( const BBox3d& b3B, BBox3d& b3Int) const ; bool Overlaps( const Frame3d& frBox, const BBox3d& b3Box) const ;
bool FindIntersectionXY( const BBox3d& b3B, BBox3d& b3Int) const ; bool FindIntersection( const BBox3d& b3Box, BBox3d& b3Int) const ;
bool FindIntersectionXY( const BBox3d& b3Box, BBox3d& b3Int) const ;
double SqDistFromPoint( const Point3d& ptP) const ; double SqDistFromPoint( const Point3d& ptP) const ;
double SqDistFromPointXY( const Point3d& ptP) const ; double SqDistFromPointXY( const Point3d& ptP) const ;
double DistFromPoint( const Point3d& ptP) const double DistFromPoint( const Point3d& ptP) const
@@ -122,3 +131,42 @@ class EGK_EXPORT BBox3d
Point3d m_ptMin ; Point3d m_ptMin ;
Point3d m_ptMax ; Point3d m_ptMax ;
} ; } ;
//----------------------------------------------------------------------------
//! Restituisce una copia in locale del box passato
//----------------------------------------------------------------------------
inline const BBox3d
GetToLoc( const BBox3d& b3Box, const Frame3d& frRef)
{
BBox3d b3New = b3Box ;
b3New.ToLoc( frRef) ;
return b3New ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia in globale del box passato
//----------------------------------------------------------------------------
inline const BBox3d
GetToGlob( const BBox3d& b3Box, const Frame3d& frRef)
{
BBox3d b3New = b3Box ;
b3New.ToGlob( frRef) ;
return b3New ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia dal primo al secondo riferimento del box passato
//----------------------------------------------------------------------------
inline const BBox3d
GetLocToLoc( const BBox3d& b3Box, const Frame3d& frOri, const Frame3d& frDest)
{
BBox3d b3New = b3Box ;
b3New.LocToLoc( frOri, frDest) ;
return b3New ;
}
//----------------------------------------------------------------------------
inline bool Overlaps( const BBox3d& bbA, const Frame3d& frA, const BBox3d& bbB, const Frame3d& frB)
{
return bbA.Overlaps( GetToLoc( frB, frA), bbB) ;
}
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgkCurve.h" #include "/EgtDev/Include/EGkCurve.h"
//----------------------- Macro per import/export ---------------------------- //----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT #undef EGK_EXPORT
+42
View File
@@ -0,0 +1,42 @@
//----------------------------------------------------------------------------
// EgalTech 2024-2024
//----------------------------------------------------------------------------
// File : EGkCAvSilhouetteSurfTm.h Data : 08.06.24 Versione : 2.6f2
// Contenuto : Dichiarazione della funzione calcolo silhouette.
//
//
//
// Modifiche : 08.06.24 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkSurfTriMesh.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
EGK_EXPORT bool CAvSilhouetteSurfTm( const ISurfTriMesh& Stm, const Plane3d& plPlane, double dTol, POLYLINEVECTOR& vPL) ;
//-----------------------------------------------------------------------------
class __declspec( novtable) ICAvParSilhouettesSurfTm
{
public :
virtual ~ICAvParSilhouettesSurfTm( void) {}
virtual bool SetData( const CISURFTMPVECTOR& vpStm, const Frame3d& frPlanes, double dTol) = 0 ;
virtual bool SetData( const CISURFTMPVECTOR& vpStm, const Frame3d& frPlanes, double dTol,
double dSideAng, double dDiam, double dCornRad, double dMaxMat, double dOffsR,
double dMaxDepth) = 0 ;
virtual bool GetSilhouette( double dLevel, POLYLINEVECTOR& vPL) = 0 ;
} ;
//-----------------------------------------------------------------------------
EGK_EXPORT ICAvParSilhouettesSurfTm* CreateCAvParSilhouettesSurfTm( void) ;
+14 -7
View File
@@ -35,20 +35,27 @@ const int SCI_LINE_LINE = 4 ; // tra linea di mobile e linea di fiss
struct SCollInfo struct SCollInfo
{ {
int nType ; // tipo di collisione int nType ; // tipo di collisione
int nChunkM ; // indice del chunk della regione mobile int nChunkM ; // indice del chunk della regione mobile
int nCrvM ; // indice della curva nel loop esterno del chunk int nLoopM ; // indice del loop del chunk della regione mobile
int nCrvM ; // indice della curva nel loop del chunk
int nChunkF ; // indice del chunk della regione fissa int nChunkF ; // indice del chunk della regione fissa
int nCrvF ; // indice della curva nel loop esterno del chunk int nLoopF ; // indice del loop del chunk della regione fissa
int nCrvF ; // indice della curva nel loop del chunk
Point3d ptP1 ; // punto di contatto Point3d ptP1 ; // punto di contatto
Point3d ptP2 ; // se contatto linea-linea, secondo punto di contatto Point3d ptP2 ; // se contatto linea-linea, secondo punto di contatto
Vector3d vtDirM ; // se contatto del mobile con linea, sua direzione Vector3d vtDirM ; // se contatto del mobile con linea, sua direzione
Vector3d vtDirF ; // se contatto del fisso con linea, sua direzione Vector3d vtDirF ; // se contatto del fisso con linea, sua direzione
// costruttori // costruttori
SCollInfo() : nType( SCI_NONE), nChunkM( -1), nCrvM( -1), nChunkF( -1), nCrvF( -1), SCollInfo() : nType( SCI_NONE), nChunkM( -1), nLoopM( -1), nCrvM( -1), nChunkF( -1), nLoopF( -1), nCrvF( -1),
ptP1(), ptP2(), vtDirM(), vtDirF() {} ptP1(), ptP2(), vtDirM(), vtDirF() {}
SCollInfo( const SCollInfo& Sou) : nType( Sou.nType), nChunkM( Sou.nChunkM), nCrvM( Sou.nCrvM), SCollInfo( const SCollInfo& Sou) : nType( Sou.nType),
nChunkF( Sou.nChunkF), nCrvF( Sou.nCrvF), ptP1( Sou.ptP1), nChunkM( Sou.nChunkM), nLoopM( Sou.nLoopM), nCrvM( Sou.nCrvM),
ptP2( Sou.ptP2), vtDirM( Sou.vtDirM), vtDirF( Sou.vtDirF) {} nChunkF( Sou.nChunkF), nLoopF( Sou.nLoopF), nCrvF( Sou.nCrvF),
ptP1( Sou.ptP1), ptP2( Sou.ptP2), vtDirM( Sou.vtDirM), vtDirF( Sou.vtDirF) {}
} ; } ;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -67,4 +74,4 @@ class CAvSimpleSurfFrMove
const ISurfFlatRegion* m_pRegM ; const ISurfFlatRegion* m_pRegM ;
const ISurfFlatRegion* m_pRegF ; const ISurfFlatRegion* m_pRegF ;
SCollInfo m_SCollInfo ; SCollInfo m_SCollInfo ;
} ; } ;
+41
View File
@@ -0,0 +1,41 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2018
//----------------------------------------------------------------------------
// File : EGkCAvSurfFrMove.h Data : 26.03.2026 Versione : 3.1c7
// Contenuto : Dichiarazione classe per movimento di superfici flat region
// nel loro piano evitando collisioni
//
// Modifiche : 26.03.26 RE Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCAvSimpleSurfFrMove.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
class CAvSurfFrMove
{
public :
EGK_EXPORT CAvSurfFrMove( const ISurfFlatRegion& SfrM, const ISurfFlatRegion& SfrF) ;
public :
EGK_EXPORT bool Translate( const Vector3d& vtDir, double& dLen) ;
EGK_EXPORT bool Rotate( const Point3d& ptCen, double& dAng) ;
EGK_EXPORT const SCollInfo& GetCollInfo()
{ return m_CollInfo ; }
private :
const ISurfFlatRegion* m_pRegM ;
const ISurfFlatRegion* m_pRegF ;
SCollInfo m_CollInfo ;
} ;
+12 -2
View File
@@ -23,6 +23,8 @@
#define EGK_EXPORT __declspec( dllimport) #define EGK_EXPORT __declspec( dllimport)
#endif #endif
class ICurveComposite ;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class __declspec( novtable) ICAvToolSurfTm { class __declspec( novtable) ICAvToolSurfTm {
public : public :
@@ -35,9 +37,17 @@ class __declspec( novtable) ICAvToolSurfTm {
virtual bool SetGenTool( const ICurveComposite* pToolOutline) = 0 ; virtual bool SetGenTool( const ICurveComposite* pToolOutline) = 0 ;
virtual double GetToolRadius( void) const = 0 ; virtual double GetToolRadius( void) const = 0 ;
virtual double GetToolHeight( void) const = 0 ; virtual double GetToolHeight( void) const = 0 ;
virtual double GetToolTipHeight( void) const = 0 ;
virtual double GetToolTipRadius( void) const = 0 ;
virtual double GetToolCornRadius( void) const = 0 ;
virtual const ICurveComposite& GetToolOutline( bool bApprox = false) const = 0 ; virtual const ICurveComposite& GetToolOutline( bool bApprox = false) const = 0 ;
virtual bool TestPosition( const Point3d& ptT, const Vector3d& vtDir, const Vector3d& vtMove, double& dTotDist) = 0 ; virtual bool TestPosition( const Point3d& ptT, const Vector3d& vtDir, const Vector3d& vtMove,
virtual bool TestPath( PNTULIST& lPntM, const Vector3d& vtDir, const Vector3d& vtMove, double dLinTol) = 0 ; double& dTotDist, Vector3d* pvtTriaN = nullptr) const = 0 ;
virtual bool TestPositionAdv( const Point3d& ptT, const Vector3d& vtDir, const Vector3d& vtMove,
double& dTotDist, VCT3DVECTOR& vVtN) const = 0 ;
virtual bool TestSeries( PNTUVECTOR& vPntM, const Vector3d& vtDir, const Vector3d& vtMove, double dProgCoeff = 1) = 0 ;
virtual bool TestSeriesAdv( PNTUVVECTVECTOR& vPntM, const Vector3d& vtDir, const Vector3d& vtMove, double dProgCoeff = 1) = 0 ;
virtual bool TestPath( PNTULIST& lPntM, const Vector3d& vtDir, const Vector3d& vtMove, double dLinTol, double dProgCoeff = 1) = 0 ;
} ; } ;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
+16 -3
View File
@@ -1,12 +1,13 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2016-2020 // EgalTech 2016-2024
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkCDeBoxClosedSurfTm.h Data : 09.01.20 Versione : 2.2a2 // File : EGkCDeBoxClosedSurfTm.h Data : 24.03.24 Versione : 2.6c2
// Contenuto : Dichiarazione funzione verifica collisione tra // Contenuto : Dichiarazione funzione verifica collisione tra
// BoundingBox e Closed SurfTriMesh. // BoundingBox e Closed SurfTriMesh.
// //
// Modifiche : 05.10.16 DS Creazione modulo. // Modifiche : 05.10.16 DS Creazione modulo.
// 09.01.20 DS Cambio nome alla funzione e cambio parametri. // 09.01.20 DS Cambio nome alla funzione e cambio parametri.
// 24.03.24 DS Aggiunta TestBoxSurfTm.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -24,4 +25,16 @@
#endif #endif
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
EGK_EXPORT bool CDeBoxClosedSurfTm( const Frame3d& frBox, const Vector3d& vtDiag, double dSafeDist, const ISurfTriMesh& Stm) ; // Il sistema di riferimento è allineato con il box e ha origine in un suo vertice.
// La distanza di sicurezza ha effetto solo se maggiore di EPS_SMALL.
// Il sistema di riferimento del box è riferito a quello della superficie.
// La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
//----------------------------------------------------------------------------
EGK_EXPORT bool CDeBoxClosedSurfTm( const Frame3d& frBox, const Vector3d& vtDiag, const ISurfTriMesh& Stm, double dSafeDist) ;
//----------------------------------------------------------------------------
// Verifica l'interferenza tra il box e la superficie : restituisce true in caso di interferenza.
//----------------------------------------------------------------------------
EGK_EXPORT bool TestBoxSurfTm( const Frame3d& frBox, const Vector3d& vtDiag, const ISurfTriMesh& Stm, double dSafeDist) ;
+14 -6
View File
@@ -1,12 +1,12 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2020-2020 // EgalTech 2020-2024
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkCDeSurfTmSurfTm.h Data : 13.11.20 Versione : // File : EGkCDeClosedSurfTmClosedSurfTm.h Data : 24.03.24 Versione : 2.6c2
// Contenuto : Dichiarazione funzione verifica collisione tra // Contenuto : Dichiarazione funzione verifica collisione tra
// SurfTm e SurfTm. // SurfTm e SurfTm.
// //
// Modifiche : 13.11.20 LM Creazione modulo. // Modifiche : 13.11.20 LM Creazione modulo.
// // 24.03.24 DS Aggiunta TestSurfTmSurfTm.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -23,8 +23,16 @@
#endif #endif
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// La funzione restituisce true in caso di collisone, false in caso di assenza
// di collisione o inconsistenza dei parametri di input.
// Le due superfici devono essere espresse nel medesimo sistema di riferimento. // Le due superfici devono essere espresse nel medesimo sistema di riferimento.
// La distanza di sicurezza ha effetto solo se maggiore di EPS_SMALL. // La distanza di sicurezza ha effetto solo se maggiore di EPS_SMALL.
EGK_EXPORT bool CDeClosedSurfTmClosedSurfTm( const SurfTriMesh& SurfA, const SurfTriMesh& SurfB, double dSafeDist) ; // La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
//----------------------------------------------------------------------------
EGK_EXPORT bool CDeClosedSurfTmClosedSurfTm( const ISurfTriMesh& SurfA, const ISurfTriMesh& SurfB, double dSafeDist) ;
//----------------------------------------------------------------------------
// Verifica l'interferenza tra le due superfici : restituisce true in caso di interferenza.
// Se richiesta verifica inclusione se una delle due è chiusa controlla l'inclusione dell'altra.
//----------------------------------------------------------------------------
EGK_EXPORT bool TestSurfTmSurfTm( const ISurfTriMesh& SurfA, const ISurfTriMesh& SurfB, double dSafeDist, bool bTestEnclosion = false) ;
+16 -7
View File
@@ -1,12 +1,12 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2020-2020 // EgalTech 2020-2024
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkCDeConeFrustumClosedSurfTm.h Data : 09.11.20 Versione : // File : EGkCDeConeFrustumClosedSurfTm.h Data : 24.03.24 Versione : 2.6c2
// Contenuto : Dichiarazione funzione verifica collisione tra // Contenuto : Dichiarazione funzione verifica collisione tra
// Cone e Closed SurfTriMesh. // Cone e Closed SurfTriMesh.
// //
// Modifiche : 09.11.20 LM Creazione modulo. // Modifiche : 09.11.20 LM Creazione modulo.
// // 24.03.24 DS Aggiunta TestConeFrustumSurfTm.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -23,8 +23,17 @@
#endif #endif
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// Il sisitema di riferimento deve avere l'asse di simmetria del cono come asse Z e origine nel centro della base. // Il sistema di riferimento deve avere l'asse di simmetria del cono come asse Z e origine nel centro della base.
// La distanza di sicurezza ha effetto solo se maggiore di epsilon, altrimenti è ignorata ed è ininfluente. // La distanza di sicurezza ha effetto solo se maggiore di EPS_SMALL.
// Il sistema di riferimento del cono deve essere immerso in quello della superficie. // Il sistema di riferimento del cono è riferito a quello della superficie.
// La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
EGK_EXPORT bool CDeConeFrustumClosedSurfTm( const Frame3d& frCone, double dBaseRad, double dTopRad, double dHeight, EGK_EXPORT bool CDeConeFrustumClosedSurfTm( const Frame3d& frCone, double dBaseRad, double dTopRad, double dHeight,
double dSafeDist, const ISurfTriMesh& Stm) ; const ISurfTriMesh& Stm, double dSafeDist) ;
//----------------------------------------------------------------------------
// Verifica l'interferenza tra il tronco di cono e la superficie : restituisce true in caso di interferenza.
//----------------------------------------------------------------------------
EGK_EXPORT bool TestConeFrustumSurfTm( const Frame3d& frCone, double dBaseRad, double dTopRad, double dHeight,
const ISurfTriMesh& Stm, double dSafeDist) ;
+16 -7
View File
@@ -1,12 +1,12 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2020-2020 // EgalTech 2020-2024
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkCDeConvexTorusTria.h Data : 18.11.20 Versione : // File : EGkCDeConvexTorusTria.h Data : 24.03.24 Versione : 2.6c2
// Contenuto : Dichiarazione funzione verifica collisione tra // Contenuto : Dichiarazione funzione verifica collisione tra
// toro convesso e SurfTriMesh. // toro convesso e SurfTriMesh.
// //
// Modifiche : 18.11.20 LM Creazione modulo. // Modifiche : 18.11.20 LM Creazione modulo.
// // 24.03.24 DS Aggiunta TestConvexTorusSurfTm.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -24,9 +24,18 @@
#endif #endif
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// Il toro convesso è il disco limitato dalla sola parte esterna del toro. // Il toro convesso è il disco solido limitato dalla sola parte esterna del toro.
// Raggio principale R1, raggio secondario R2. // Raggio principale R1, raggio secondario R2.
// Il toro è posto nel piano XY del suo riferimento, centrato sull'origine. // Il toro è posto nel piano XY del suo riferimento, centrato sull'origine.
// La funzione restituisce true in caso di collisione. // La funzione restituisce :
EGK_EXPORT bool CDeConvexTorusClosedSurfTm( const Frame3d& frTorusFrame, double dRad1, double dRad2, // - true in caso di collisione o inconsistenza dei parametri di input
double dSafeDist, const ISurfTriMesh& tmSurf) ; // - false in caso di assenza di collisione.
//----------------------------------------------------------------------------
EGK_EXPORT bool CDeConvexTorusClosedSurfTm( const Frame3d& frTorus, double dRad1, double dRad2,
const ISurfTriMesh& tmSurf, double dSafeDist) ;
//----------------------------------------------------------------------------
// Verifica l'interferenza tra il toro convesso e la superficie : restituisce true in caso di interferenza
//----------------------------------------------------------------------------
EGK_EXPORT bool TestConvexTorusSurfTm( const Frame3d& frTorus, double dRad1, double dRad2,
const ISurfTriMesh& Stm, double dSafeDist) ;
+16 -4
View File
@@ -1,12 +1,12 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2020-2020 // EgalTech 2020-2024
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkCDeCylClosedSurfTm.h Data : 09.01.20 Versione : 2.2a2 // File : EGkCDeCylClosedSurfTm.h Data : 24.03.24 Versione : 2.6c2
// Contenuto : Dichiarazione funzione verifica collisione tra // Contenuto : Dichiarazione funzione verifica collisione tra
// Cylinder e Closed SurfTriMesh. // Cylinder e Closed SurfTriMesh.
// //
// Modifiche : 09.01.20 DS Creazione modulo. // Modifiche : 09.01.20 DS Creazione modulo.
// // 24.03.24 DS Aggiunta TestCylSurfTm.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -23,4 +23,16 @@
#endif #endif
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
EGK_EXPORT bool CDeCylClosedSurfTm( const Frame3d& frCyl, double dR, double dH, double dSafeDist, const ISurfTriMesh& Stm) ; // Il sistema di riferimento deve avere l'asse di simmetria del cilindro come asse Z e origine nel centro della base.
// La distanza di sicurezza ha effetto solo se maggiore di EPS_SMALL, altrimenti è ignorata ed è ininfluente.
// Il sistema di riferimento del cilindro è riferito a quello della superficie.
// La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
//----------------------------------------------------------------------------
EGK_EXPORT bool CDeCylClosedSurfTm( const Frame3d& frCyl, double dR, double dH, const ISurfTriMesh& Stm, double dSafeDist) ;
//----------------------------------------------------------------------------
// Verifica l'interferenza tra il cilindro e la superficie : restituisce true in caso di interferenza.
//----------------------------------------------------------------------------
EGK_EXPORT bool TestCylSurfTm( const Frame3d& frCyl, double dR, double dH, const ISurfTriMesh& Stm, double dSafeDist) ;
+15 -4
View File
@@ -1,12 +1,12 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2020-2020 // EgalTech 2020-2024
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkCDeRectPrismoidClosedSurfTm.h Data : 09.11.20 Versione : // File : EGkCDeRectPrismoidClosedSurfTm.h Data : 24.03.24 Versione : 2.6c2
// Contenuto : Dichiarazione funzione verifica collisione tra // Contenuto : Dichiarazione funzione verifica collisione tra
// prismoide a basi rettangolari e Closed SurfTriMesh. // prismoide a basi rettangolari e Closed SurfTriMesh.
// //
// Modifiche : 09.11.20 LM Creazione modulo. // Modifiche : 09.11.20 LM Creazione modulo.
// // 24.03.24 DS Aggiunta TestRectPrismoidSurfTm.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -26,6 +26,17 @@
// Il sistema di riferimento deve avere l'origine nel centro della Base, asse X lungo // Il sistema di riferimento deve avere l'origine nel centro della Base, asse X lungo
// un segmento della stessa e asse Z ortogonale alle basi e diretto verso la base Top. // un segmento della stessa e asse Z ortogonale alle basi e diretto verso la base Top.
// Il sistema di riferimento della piramide deve essere immerso in quello della superficie. // Il sistema di riferimento della piramide deve essere immerso in quello della superficie.
// La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
//----------------------------------------------------------------------------
EGK_EXPORT bool CDeRectPrismoidClosedSurfTm( const Frame3d& frPrismoid, double dLenghtBaseX, double dLenghtBaseY, EGK_EXPORT bool CDeRectPrismoidClosedSurfTm( const Frame3d& frPrismoid, double dLenghtBaseX, double dLenghtBaseY,
double dLenghtTopX, double dLenghtTopY, double dHeight, double dLenghtTopX, double dLenghtTopY, double dHeight,
double dSafeDist, const ISurfTriMesh& Stm) ; const ISurfTriMesh& Stm, double dSafeDist) ;
//----------------------------------------------------------------------------
// Verifica l'interferenza tra il Prismoide a basi rettangolari e la superficie : restituisce true in caso di interferenza.
//----------------------------------------------------------------------------
EGK_EXPORT bool TestRectPrismoidSurfTm( const Frame3d& frPrismoid, double dLenghtBaseX, double dLenghtBaseY,
double dLenghtTopX, double dLenghtTopY, double dHeight,
const ISurfTriMesh& Stm, double dSafeDist) ;
+13 -4
View File
@@ -1,12 +1,12 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2020-2020 // EgalTech 2020-2024
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkCDeSpheClosedSurfTm.h Data : 09.01.20 Versione : 2.2a2 // File : EGkCDeSpheClosedSurfTm.h Data : 24.03.24 Versione : 2.6c2
// Contenuto : Dichiarazione funzione verifica collisione tra // Contenuto : Dichiarazione funzione verifica collisione tra
// Sphere e Closed SurfTriMesh. // Sphere e Closed SurfTriMesh.
// //
// Modifiche : 09.01.20 DS Creazione modulo. // Modifiche : 09.01.20 DS Creazione modulo.
// // 24.03.24 DS Aggiunta TestSpheSurfTm.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -23,4 +23,13 @@
#endif #endif
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
EGK_EXPORT bool CDeSpheClosedSurfTm( const Point3d& ptCen, double dR, double dSafeDist, const ISurfTriMesh& Stm) ; // La funzione restituisce :
// - true in caso di collisione o inconsistenza dei parametri di input
// - false in caso di assenza di collisione.
//----------------------------------------------------------------------------
EGK_EXPORT bool CDeSpheClosedSurfTm( const Point3d& ptCen, double dR, const ISurfTriMesh& Stm, double dSafeDist) ;
//----------------------------------------------------------------------------
// Verifica l'interferenza tra la sfera e la superficie : restituisce true in caso di interferenza
//----------------------------------------------------------------------------
EGK_EXPORT bool TestSpheSurfTm( const Point3d& ptCen, double dR, const ISurfTriMesh& Stm, double dSafeDist) ;
+99
View File
@@ -0,0 +1,99 @@
//----------------------------------------------------------------------------
// EgalTech 2023-2023
//----------------------------------------------------------------------------
// File : EGkCalcPocketing.h Data : 16.11.23 Versione : 2.5j1
// Contenuto : Calcolo dei percorsi elementari di pocketing.
//
//
//
// Modifiche : 16.11.23 RE Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurveComposite.h"
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
// Per calcolo percorso di Svuotatura o di Lucidatura
EGK_EXPORT bool CalcPocketing( const ISurfFlatRegion* pSfr, double dRad, double dRadialOffs, double dStep,
double dAngle, double dOpenMinSafe, int nType, bool bSmooth, bool bCalcUnclReg, bool bInvert, bool bAvoidOpt,
bool bConventionalMilling, bool bAllowZigZagOneWayBorders, bool bCalcFeed, const Point3d& ptEndPrec,
const ISurfFlatRegion* pSfrLimit, bool bAllOffs, double dMaxOptSize,
int nLiType, double dLiTang, double dLiElev, int nLoType, double dLoTang,
bool bPolishing, double dEpicyclesRad, double dEpicyclesDist, ICRVCOMPOPOVECTOR& vCrv) ;
EGK_EXPORT bool IsPocketingHole( const ISurfFlatRegion* pSfr, double dRad, double dRadialOffs, double dStep, int nType,
int nLiType, double dLiTang, double dRatioSfrTool) ;
EGK_EXPORT bool CalcSmoothCurve( ICurveComposite* pCrv, double dRightLen, double dLeftLen, bool bAsParam) ;
EGK_EXPORT bool CalcZigZagInfill( const ISurfFlatRegion* pSfr, double dStep, bool bSmooth, bool bRemoveOverlapLink,
ICRVCOMPOPOVECTOR& vCrvCompoRes) ;
//-----------------------------------------------------------------------------
// Sottotipo di lavorazione
enum { POCKET_ZIGZAG = 0,
POCKET_ONEWAY = 1,
POCKET_SPIRALIN = 2,
POCKET_SPIRALOUT = 3,
POCKET_CONFORMAL_ZIGZAG = 4,
POCKET_CONFORMAL_ONEWAY = 5
} ;
// Definizione di lato aperto e lato chiuso
enum {
TEMP_PROP_CLOSE_EDGE = 0,
TEMP_PROP_OPEN_EDGE = 1,
TEMP_PROP_OPEN_EDGE_IN_RAW = 2
} ;
// Definizione di curva invalida
enum {
TEMP_PROP_INVALID = - 1
} ;
// Definizione curva di raccordo per smussi
enum {
TEMP_PROP_SMOOTH = - 2
} ;
// Definizione tipo di curva per casi speciali
enum {
TEMP_PROP_SINGLE_CURVE = - 3,
TEMP_PROP_OPT_TRAPEZOID = - 4,
TEMP_PROP_BORDER_CURVE = - 5,
TEMP_PROP_OPT_CIRCLE = - 9
} ;
// Definizione tipo di curva per entrate da fuori
enum {
TEMP_PROP_OUT_START = - 6
} ;
// Definizione di curva attiva/non attiva
enum {
TEMP_PROP_CURVE_ACTIVE = - 7,
TEMP_PROP_CURVE_INACTIVE = - 8
} ;
// Definizione tipo LeadIn
enum {
LEAD_IN_NONE = 0,
LEAD_IN_GLIDE = 1,
LEAD_IN_ZIGZAG = 2,
LEAD_IN_HELIX = 3
} ;
// Definizione tipo LeadOut
enum {
LEAD_OUT_NONE = 0,
LEAD_OUT_GLIDE = 1
} ;
+1 -3
View File
@@ -16,7 +16,6 @@
#include "/EgtDev/Include/EGkPointGrid3d.h" #include "/EgtDev/Include/EGkPointGrid3d.h"
#include "/EgtDev/Include/EGkGeoCollection.h" #include "/EgtDev/Include/EGkGeoCollection.h"
#include <unordered_set>
class IGeomDB ; class IGeomDB ;
@@ -59,7 +58,6 @@ class ChainCurves
EGK_EXPORT bool GetForkIds( INTVECTOR& vForkIds) ; EGK_EXPORT bool GetForkIds( INTVECTOR& vForkIds) ;
private : private :
typedef std::unordered_set<int> INTUSET ;
struct CrvData { struct CrvData {
int nId ; int nId ;
Point3d ptStart ; Point3d ptStart ;
@@ -92,7 +90,7 @@ class ChainCurves
private : private :
bool m_bAllowInvert ; bool m_bAllowInvert ;
double m_dToler ; double m_dToler ;
INTUSET m_sCrvId ; INTUNORDSET m_sCrvId ;
CRVDATAVECTOR m_vCrvData ; CRVDATAVECTOR m_vCrvData ;
PointGrid3d m_PointGrid ; PointGrid3d m_PointGrid ;
bool m_bFromNear ; bool m_bFromNear ;
+28
View File
@@ -0,0 +1,28 @@
//----------------------------------------------------------------------------
// EgalTech 2022-202
//----------------------------------------------------------------------------
// File : EGkCircle2Pe.h Data : 18.08.22 Versione : 2.4h2
// Contenuto : Dichiarazione funzioni per calcolo circonferenze per 2 punti
// diametrali.
//
//
// Modifiche : 18.08.22 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurveArc.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
EGK_EXPORT ICurveArc* GetCircle2P( const Point3d& ptP1, const Point3d& ptP2, const Vector3d& vtN) ;
+1 -1
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2015-2015 // EgalTech 2015-2015
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkCircleCenTgCurve.h Data : 12.03.15 Versione : 1.6c2 // File : EGkCircleCenTgCurve.h Data : 12.03.15 Versione : 1.6c2
// Contenuto : Dichiarazione funzioni per calcolo circonferenze di centro // Contenuto : Dichiarazione funzioni per calcolo circonferenze di centro
// dato tangenti a curve. // dato tangenti a curve.
// //
+5
View File
@@ -60,6 +60,10 @@ class Color
{ m_Col[ALPHA] = (( nAlpha < 0) ? 0 : (( nAlpha > MAX_ALPHA) ? MAX_ALPHA : nAlpha)) ; } { m_Col[ALPHA] = (( nAlpha < 0) ? 0 : (( nAlpha > MAX_ALPHA) ? MAX_ALPHA : nAlpha)) ; }
void SetAlpha( double dAlpha) void SetAlpha( double dAlpha)
{ m_Col[ALPHA] = (( dAlpha < 0) ? 0 : (( dAlpha > 1) ? MAX_ALPHA : int( lround( dAlpha * MAX_ALPHA)))) ; } { m_Col[ALPHA] = (( dAlpha < 0) ? 0 : (( dAlpha > 1) ? MAX_ALPHA : int( lround( dAlpha * MAX_ALPHA)))) ; }
void Intensify( double dCoeff)
{ Set( int( m_Col[RED] * dCoeff), int( m_Col[GREEN] * dCoeff), int( m_Col[BLUE] * dCoeff), m_Col[ALPHA]) ;
if ( dCoeff > 1 && m_Col[RED] < 64 && m_Col[GREEN] < 64 && m_Col[BLUE] < 64)
Set( 64, 64, 64, m_Col[ALPHA]) ; }
int GetIntRed( void) const int GetIntRed( void) const
{ return m_Col[RED] ; } { return m_Col[RED] ; }
int GetIntGreen( void) const int GetIntGreen( void) const
@@ -104,6 +108,7 @@ class Color
const Color WHITE( 255, 255, 255) ; const Color WHITE( 255, 255, 255) ;
const Color LGRAY( 192, 192, 192) ; const Color LGRAY( 192, 192, 192) ;
const Color GRAY( 128, 128, 128) ; const Color GRAY( 128, 128, 128) ;
const Color DGRAY( 64, 64, 64) ;
const Color BLACK( 0, 0, 0) ; const Color BLACK( 0, 0, 0) ;
const Color RED( 255, 0, 0) ; const Color RED( 255, 0, 0) ;
const Color MAROON( 128, 0, 0) ; const Color MAROON( 128, 0, 0) ;
+3 -2
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2014-2014 // EgalTech 2014-2014
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkCurve.h Data : 06.05.14 Versione : 1.5e3 // File : EGkCurve.h Data : 06.05.14 Versione : 1.5e3
// Contenuto : Dichiarazione della interfaccia ICurve. // Contenuto : Dichiarazione della interfaccia ICurve.
// //
// //
@@ -31,6 +31,7 @@ class __declspec( novtable) ICurve : public IGeoObj
PP_END = 3} ; // punto coincidente con la fine PP_END = 3} ; // punto coincidente con la fine
enum ApprLineType { APL_STD = 0, // approssimazione standard enum ApprLineType { APL_STD = 0, // approssimazione standard
APL_SPECIAL = 10, // come STD, per composite conserva estremi di curve componenti APL_SPECIAL = 10, // come STD, per composite conserva estremi di curve componenti
APL_SPECIAL_INT = 20, // come SPECIAL, per composite anche almeno un interno di componenti non rettilinei
APL_LEFT = 1, // linee sempre a sinistra APL_LEFT = 1, // linee sempre a sinistra
APL_LEFT_CONVEX = 11, // linee sempre a sinistra convesse APL_LEFT_CONVEX = 11, // linee sempre a sinistra convesse
APL_RIGHT = 2, // linee sempre a destra APL_RIGHT = 2, // linee sempre a destra
@@ -79,7 +80,7 @@ class __declspec( novtable) ICurve : public IGeoObj
virtual bool ApproxWithArcsEx( double dLinTol, double dAngTolDeg, double dLinFea, PolyArc& PA) const = 0 ; virtual bool ApproxWithArcsEx( double dLinTol, double dAngTolDeg, double dLinFea, PolyArc& PA) const = 0 ;
virtual ICurve* CopyParamRange( double dUStart, double dUEnd) const = 0 ; virtual ICurve* CopyParamRange( double dUStart, double dUEnd) const = 0 ;
virtual bool Invert( void) = 0 ; virtual bool Invert( void) = 0 ;
virtual bool SimpleOffset( double dDist, int nType = OFF_FILLET) = 0 ; virtual bool SimpleOffset( double dDist, int nType = OFF_FILLET, double dMaxAngExt = ANG_RIGHT) = 0 ;
virtual bool SetExtrusion( const Vector3d& vtExtr) = 0 ; virtual bool SetExtrusion( const Vector3d& vtExtr) = 0 ;
virtual bool SetThickness( double dThick) = 0 ; virtual bool SetThickness( double dThick) = 0 ;
virtual bool ModifyStart( const Point3d& ptNewStart) = 0 ; virtual bool ModifyStart( const Point3d& ptNewStart) = 0 ;
+2 -2
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2013 // EgalTech 2013-2013
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkCurveArc.h Data : 22.11.13 Versione : 1.3a1 // File : EGkCurveArc.h Data : 22.11.13 Versione : 1.3a1
// Contenuto : Dichiarazione della interfaccia ICurveArc. // Contenuto : Dichiarazione della interfaccia ICurveArc.
// //
// //
@@ -55,7 +55,7 @@ class __declspec( novtable) ICurveArc : public ICurve
virtual bool ChangeDeltaN( double dNewDeltaN) = 0 ; virtual bool ChangeDeltaN( double dNewDeltaN) = 0 ;
virtual bool ChangeAngCenter( double dNewAngCenDeg) = 0 ; virtual bool ChangeAngCenter( double dNewAngCenDeg) = 0 ;
virtual bool ChangeStartPoint( double dU) = 0 ; virtual bool ChangeStartPoint( double dU) = 0 ;
virtual bool ExtendedOffset( double dDist, int nType = OFF_FILLET) = 0 ; virtual bool ExtendedOffset( double dDist) = 0 ;
virtual bool ToExplementary( void) = 0 ; virtual bool ToExplementary( void) = 0 ;
virtual bool Flip( void) = 0 ; virtual bool Flip( void) = 0 ;
} ; } ;
+106 -3
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2014-2014 // EgalTech 2014-2014
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkCurveAux.h Data : 23.05.14 Versione : 1.5e9 // File : EGkCurveAux.h Data : 28.01.24 Versione : 2.6a2
// Contenuto : Dichiarazione funzioni ausiliarie per ICurve. // Contenuto : Dichiarazione funzioni ausiliarie per ICurve.
// //
// //
@@ -15,6 +15,10 @@
#include "/EgtDev/Include/EGkCurveComposite.h" #include "/EgtDev/Include/EGkCurveComposite.h"
class ICurveBezier ;
class ICurveLine ;
class ICurveArc ;
class ICurveComposite ;
//----------------------- Macro per import/export ---------------------------- //----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT #undef EGK_EXPORT
@@ -32,17 +36,65 @@ struct CNurbsData
bool bRat ; // flag di curva razionale (pesi non tutti unitari) bool bRat ; // flag di curva razionale (pesi non tutti unitari)
bool bPeriodic ; // flag per segnalare vettore dei nodi periodico bool bPeriodic ; // flag per segnalare vettore dei nodi periodico
bool bClosed ; // flag di curva chiusa bool bClosed ; // flag di curva chiusa
bool bClamped ; // flag di curva clamped
bool bExtraKnotes ; // flag per segnalare presenza di nodi extra all'inizio e fine (totale 2) bool bExtraKnotes ; // flag per segnalare presenza di nodi extra all'inizio e fine (totale 2)
DBLVECTOR vU ; // vettore dei nodi DBLVECTOR vU ; // vettore dei nodi
PNTVECTOR vCP ; // vettore dei punti di controllo PNTVECTOR vCP ; // vettore dei punti di controllo
DBLVECTOR vW ; // vettore dei pesi DBLVECTOR vW ; // vettore dei pesi
CNurbsData( void) : nDeg( 0), bRat( false), bPeriodic( false), bClosed( false), bExtraKnotes( false) {} CNurbsData( void) : nDeg( 0), bRat( false), bPeriodic( false), bClosed( false), bClamped( true), bExtraKnotes(false) {}
} ; } ;
// N.B. : in caso la curva sia razionale i punti di controllo sono in forma NON OMOGENEA [ x, y, z, w] ( dove la forma OMOGENEA [ w*x, w*y, w*z, w])
// tutte le operazioni richiedono la forma OMOGENEA, finite le quali posso riportarmi alla forma NON OMOGENEA
//----------------------------------------------------------------------------
//! Trasforma una curva in una nuova curva di Bezier semplice
EGK_EXPORT ICurve* CurveToBezierCurve( const ICurve* pCrv, int nDeg = 3, bool bMakeRatOrNot = false) ;
//----------------------------------------------------------------------------
//! Trasforma una linea in una nuova curva di Bezier semplice
EGK_EXPORT ICurveBezier* LineToBezierCurve( const ICurveLine* pCrvLine, int nDeg = 3, bool bMakeRatOrNot = false) ;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Trasforma un arco in una nuova curva di Bezier semplice o composta //! Trasforma un arco in una nuova curva di Bezier semplice o composta
EGK_EXPORT ICurve* ArcToBezierCurve( const ICurve* pArc) ; EGK_EXPORT ICurve* ArcToBezierCurve( const ICurveArc* pArc, int nDeg = 3, bool bMakeRatOrNot = true) ;
//----------------------------------------------------------------------------
//! Trasforma una curva compo in una nuova curva di Bezier semplice o composta
EGK_EXPORT ICurve* CompositeToBezierCurve( const ICurveComposite* pCrv, int nDeg = 3, bool bMakeRatOrNot = false) ;
//----------------------------------------------------------------------------
//! Trasforma una curva bezier in una nuova curva di Bezier semplice o composta della razionalit e grado desiderato ( minimo 3)
EGK_EXPORT ICurve* EditBezierCurve( const ICurveBezier* pCrv, int nDeg = 3, bool bMakeRatOrNot = false, double dTol = 10 * EPS_SMALL) ;
//----------------------------------------------------------------------------
//! Approssima una bezier con una serie di bezier cubiche
EGK_EXPORT ICurve* ApproxBezierWithCubics( const ICurve* pCrv, double dTol) ;
//----------------------------------------------------------------------------
//! Approssima una bezier con una serie di bezier cubiche
EGK_EXPORT ICurveBezier* ApproxArcCurveBezierWithSingleCubic( const ICurve* pCrv, const Point3d& ptCen, const Vector3d& vtN) ;
//----------------------------------------------------------------------------
//! Campiona una serie di punti dalla curva e li approssima con una o pi curve di bezier
EGK_EXPORT ICurve* ApproxCurveWithBezier( const ICurve* pCrv, double dTol, const Vector3d& vtStart = V_NULL, const Vector3d& vtEnd = V_NULL) ;
//----------------------------------------------------------------------------
//! Interpola un set di punti e li approssima con una o pi curve di bezier cubiche
EGK_EXPORT ICurve* InterpolatePointSetWithBezier( const PNTVECTOR& vPnt, double dLinTol, double dMaxLen) ;
//----------------------------------------------------------------------------
//! Aumento il grado della curva di Bezier
EGK_EXPORT ICurveBezier* BezierIncreaseDegree( const ICurveBezier* pCrvBezier) ;
//----------------------------------------------------------------------------
//! Riduco il grado della curva di Bezier
EGK_EXPORT ICurveBezier* BezierDecreaseDegree( const ICurveBezier* pCrvBezier, double dTol) ;
//----------------------------------------------------------------------------
//! Misura l'errore di approsimazione tra la curva originale e quella modificata
EGK_EXPORT bool CalcApproxError( const ICurve* pCrvOri, const ICurve* pCrvNew, double& dErr, int nPoints = 20) ;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Trasforma una curva in una nuova curva semplice o composta senza archi (solo linee o curve di Bezier) //! Trasforma una curva in una nuova curva semplice o composta senza archi (solo linee o curve di Bezier)
@@ -74,3 +126,54 @@ EGK_EXPORT ICurve* ProjectCurveOnPlane( const ICurve& crCrv, const Plane3d& plPl
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Uniforma la pendenza di una composita tra quota iniziale e finale assegnate //! Uniforma la pendenza di una composita tra quota iniziale e finale assegnate
EGK_EXPORT bool AdjustCurveSlope( ICurveComposite* pCrv, double dNini, double dNfin) ; EGK_EXPORT bool AdjustCurveSlope( ICurveComposite* pCrv, double dNini, double dNfin) ;
//----------------------------------------------------------------------------
//! Calcolo del diagramma di Voronoi della curva/e, nei TempParam dei risultati la distanza
//! Per nBound tenere valore di default.
EGK_EXPORT bool CalcCurveVoronoiDiagram( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, int nBound = 3) ;
EGK_EXPORT bool CalcCurvesVoronoiDiagram( const CICURVEPVECTOR& vCrvC, ICURVEPOVECTOR& vCrvs, int nBound = 3) ;
//----------------------------------------------------------------------------
//! Calcolo del Medial Axis della curva/e (sottoinsieme del diagramma di Voronoi), nei TempParam dei risultati la distanza
const int WMAT_BOTHSIDES = 0 ;
const int WMAT_LEFT = 1 ;
const int WMAT_RIGHT = 2 ;
EGK_EXPORT bool CalcCurveMedialAxis( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, int nSide) ;
EGK_EXPORT bool CalcCurvesMedialAxis( const CICURVEPVECTOR& vCrvC, ICURVEPOVECTOR& vCrvs, int nSide) ;
//----------------------------------------------------------------------------
//! Calcola l'offset completo di una curva
EGK_EXPORT bool CalcCurveFatCurve( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, double dRadius, bool bSquareEnds, bool bSquareMids,
bool bMergeOnlySameProps = true) ;
//----------------------------------------------------------------------------
//! Calcola, nel caso di curve chiuse, il valore limite di offset ( in valore assoluto) che fa sparire la curva
EGK_EXPORT bool CalcCurveLimitOffset( const ICurve& crvC, double& dOffs) ;
//----------------------------------------------------------------------------
//! Calcola, se possibile, le curve di offset del valore richiesto come curve singole
EGK_EXPORT bool CalcCurveSingleCurvesOffset( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, double dOffs) ;
//----------------------------------------------------------------------------
//! Calcola, se possibile, le curve di offset dato un vettore di curve aperte/chiuse
EGK_EXPORT bool CalcOffsetCurves( const ICURVEPVECTOR& vpCrvs, ICURVEPOVECTOR& vCrvs, double dOffs,
int nType = ICurve::OFF_FILLET) ;
//----------------------------------------------------------------------------
//! Calcola, se possibile, le fat curve di offset dato un vettore di curve aperte/chiuse
EGK_EXPORT bool CalcFatOffsetCurves( const ICURVEPVECTOR& vpCrvs, ICURVEPOVECTOR& vCrvs, double dOffs,
bool bSquareEnds, bool bSquareMids,
bool bMergeOnlySameProps = true) ;
//----------------------------------------------------------------------------
//! Resetta l'oggetto voronoi associato alla curva liberandone la memoria
EGK_EXPORT void ResetCurveVoronoi( const ICurve& crvC) ;
//----------------------------------------------------------------------------
//! fa il join delle curve passate in input
EGK_EXPORT bool GetChainedCurves( ICRVCOMPOPOVECTOR& vCrv, double dChainTol = 5 * EPS_SMALL, bool bAllowInvert = false) ;
//----------------------------------------------------------------------------
//! dato un punto su una curva trova il corrispondente sulla seconda curva
EGK_EXPORT bool GetIsoPointOnSecondCurve( const ICurve* pCrv1, const ICurve* pCrv2, double dUCurr1, double& dUCurr2, double dMyDist, double dUPrev2,
double dLenPrev2, double& dLenCurr2, double dLen2) ;
+8 -1
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2013 // EgalTech 2013-2013
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkCurveBezier.h Data : 22.11.13 Versione : 1.3a1 // File : EGkCurveBezier.h Data : 22.11.13 Versione : 1.3a1
// Contenuto : Dichiarazione della interfaccia ICurveBezier. // Contenuto : Dichiarazione della interfaccia ICurveBezier.
// //
// //
@@ -16,6 +16,7 @@
#include "/EgtDev/Include/EGkCurve.h" #include "/EgtDev/Include/EGkCurve.h"
class ICurveArc ; class ICurveArc ;
class ICurveLine ;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
class __declspec( novtable) ICurveBezier : public ICurve class __declspec( novtable) ICurveBezier : public ICurve
@@ -27,7 +28,9 @@ class __declspec( novtable) ICurveBezier : public ICurve
virtual bool Init( int nDeg, bool bIsRational) = 0 ; virtual bool Init( int nDeg, bool bIsRational) = 0 ;
virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl) = 0 ; virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl) = 0 ;
virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl, double dW) = 0 ; virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl, double dW) = 0 ;
virtual bool SetControlWeight( int nInd, double dW) = 0 ;
virtual bool FromArc( const ICurveArc& crArc) = 0 ; virtual bool FromArc( const ICurveArc& crArc) = 0 ;
virtual bool FromLine( const ICurveLine& crLine) = 0 ;
virtual int GetDegree( void) const = 0 ; virtual int GetDegree( void) const = 0 ;
virtual bool IsRational( void) const = 0 ; virtual bool IsRational( void) const = 0 ;
virtual bool IsAPoint( void) const = 0 ; virtual bool IsAPoint( void) const = 0 ;
@@ -35,6 +38,10 @@ class __declspec( novtable) ICurveBezier : public ICurve
virtual double GetControlWeight( int nInd, bool* pbOk = NULL) const = 0 ; virtual double GetControlWeight( int nInd, bool* pbOk = NULL) const = 0 ;
virtual bool GetControlPolygonLength( double& dLen) const = 0 ; virtual bool GetControlPolygonLength( double& dLen) const = 0 ;
virtual int GetSingularParam( double& dPar) const = 0 ; virtual int GetSingularParam( double& dPar) const = 0 ;
virtual bool MakeRational( void) = 0 ;
virtual bool MakeRationalStandardForm( void) = 0 ;
virtual bool MakeNonRational( double dTol) = 0 ;
virtual bool IsALine( void) const = 0 ;
} ; } ;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
+6 -5
View File
@@ -1,13 +1,13 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2015-2015 // EgalTech 2015-2023
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkCurveByApprox.h Data : 23.07.15 Versione : 1.6g7 // File : EGkCurveByApprox.h Data : 28.07.23 Versione : 2.5g3
// Contenuto : Dichiarazione della classe CurveByApprox. // Contenuto : Dichiarazione della classe CurveByApprox.
// //
// //
// //
// Modifiche : 23.07.15 DS Creazione modulo. // Modifiche : 23.07.15 DS Creazione modulo.
// // 28.07.23 DS GetArcs e GetArcsCorner.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -35,10 +35,11 @@ class CurveByApprox
EGK_EXPORT bool Reset( void) ; EGK_EXPORT bool Reset( void) ;
EGK_EXPORT bool AddPoint( const Point3d& ptP) ; EGK_EXPORT bool AddPoint( const Point3d& ptP) ;
EGK_EXPORT ICurve* GetCurve( int nType, double dLinTol, double dAngTolDeg, double dLinFea) ; EGK_EXPORT ICurve* GetCurve( int nType, double dLinTol, double dAngTolDeg, double dLinFea) ;
EGK_EXPORT bool GetArcs( double dLinTol, double dAngTolDeg, double dLinFea, PolyArc& PA) ; EGK_EXPORT bool GetArcs( double dLinTol, double dAngTolDeg, PolyArc& PA) ;
EGK_EXPORT bool GetArcsCorner( double dLinTol, double dAngTolDeg, double dLinFea, PolyArc& PA) ;
public : public :
enum TYPE { ARCS_CORNER = 1, CUBIC_BEZIERS = 2} ; enum TYPE { ARCS = 0, ARCS_CORNER = 1, CUBIC_BEZIERS = 2} ;
private : private :
bool CalcParameterization( void) ; bool CalcParameterization( void) ;
+1 -1
View File
@@ -36,7 +36,7 @@ class CurveByInterp
public : public :
enum METHOD { BESSEL = 1, AKIMA = 2, AKIMA_CORNER = 3} ; enum METHOD { BESSEL = 1, AKIMA = 2, AKIMA_CORNER = 3} ;
enum TYPE { BIARCS = 1, CUBIC_BEZIERS = 2} ; enum TYPE { BIARCS = 1, CUBIC_BEZIERS = 2, CUBIC_BEZIERS_LONG = 3} ;
private : private :
bool CalcAkimaTangents( bool bDetectCorner) ; bool CalcAkimaTangents( bool bDetectCorner) ;
+50 -4
View File
@@ -1,13 +1,15 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2021 // EgalTech 2013-2022
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkCurveComposite.h Data : 03.04.21 Versione : 2.3g2 // File : EGkCurveComposite.h Data : 24.03.22 Versione : 2.4c2
// Contenuto : Dichiarazione della interfaccia ICurveComposite. // Contenuto : Dichiarazione della interfaccia ICurveComposite.
// //
// //
// //
// Modifiche : 22.11.13 DS Creazione modulo. // Modifiche : 22.11.13 DS Creazione modulo.
// 21.07.21 LM Aggiunto parametro opzionale a Set/GetCurveTempProp. // 21.07.21 LM Aggiunto parametro opzionale a Set/GetCurveTempProp.
// 23.01.22 DS Aggiunti metodi IsARectangle e IsATrapezoid.
// 24.03.22 DS Aggiunto metodo AddLineTg.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -39,27 +41,38 @@ class __declspec( novtable) ICurveComposite : public ICurve
virtual const ICurve* GetLastCurve( void) const = 0 ; virtual const ICurve* GetLastCurve( void) const = 0 ;
virtual const ICurve* GetPrevCurve( void) const = 0 ; virtual const ICurve* GetPrevCurve( void) const = 0 ;
virtual bool IsParamAtJoint( double dU) const = 0 ; virtual bool IsParamAtJoint( double dU) const = 0 ;
virtual ICurve* RemoveFirstOrLastCurve( bool bLast = true) = 0 ; virtual ICurve* RemoveFirstOrLastCurve( bool bLast = true) = 0 ;
virtual bool ChangeStartPoint( double dU) = 0 ; virtual bool ChangeStartPoint( double dU) = 0 ;
virtual bool AddPoint( const Point3d& ptStart) = 0 ; virtual bool AddPoint( const Point3d& ptStart) = 0 ;
virtual bool AddLine( const Point3d& ptNew, bool bEndOrStart = true) = 0 ; virtual bool AddLine( const Point3d& ptNew, bool bEndOrStart = true) = 0 ;
virtual bool AddArcTg( const Point3d& ptNew, bool bEndOrStart = true) = 0 ; virtual bool AddLineTg( double dLen, bool bEndOrStart = true) = 0 ;
virtual bool AddArc2P( const Point3d& ptOther, const Point3d& ptNew, bool bEndOrStart = true) = 0 ; virtual bool AddArc2P( const Point3d& ptOther, const Point3d& ptNew, bool bEndOrStart = true) = 0 ;
virtual bool AddArcTg( const Point3d& ptNew, bool bEndOrStart = true) = 0 ;
virtual bool AddJoint( double dU) = 0 ; virtual bool AddJoint( double dU) = 0 ;
virtual bool ModifyJoint( int nU, const Point3d& ptNewJoint) = 0 ; virtual bool ModifyJoint( int nU, const Point3d& ptNewJoint) = 0 ;
virtual bool ModifyJoint( int nU, const Point3d& ptNewJoint, double dTol) = 0 ;
virtual bool RemoveJoint( int nU) = 0 ; virtual bool RemoveJoint( int nU) = 0 ;
virtual bool MoveCurve( int nCrv, const Vector3d& vtMove) = 0 ; virtual bool MoveCurve( int nCrv, const Vector3d& vtMove) = 0 ;
virtual bool ModifyCurveToArc( int nCrv, const Point3d& ptMid) = 0 ; virtual bool ModifyCurveToArc( int nCrv, const Point3d& ptMid) = 0 ;
virtual bool ModifyCurveToLine( int nCrv) = 0 ; virtual bool ModifyCurveToLine( int nCrv) = 0 ;
virtual bool ArcsToBezierCurves( void) = 0 ; virtual bool ArcsToBezierCurves( void) = 0 ;
virtual bool ArcsBezierCurvesToArcsPerpExtr( double dLinTol, double dAngTolDeg) = 0 ; virtual bool ArcsBezierCurvesToArcsPerpExtr( double dLinTol, double dAngTolDeg) = 0 ;
virtual bool StraightArcsToLines( double dLinTol, double dAngTolDeg) = 0 ;
virtual bool MergeCurves( double dLinTol, double dAngTolDeg, bool bStartEnd = true, bool bNeedSameProp = false) = 0 ; virtual bool MergeCurves( double dLinTol, double dAngTolDeg, bool bStartEnd = true, bool bNeedSameProp = false) = 0 ;
virtual bool RemoveSmallParts( double dLinTol, double dAngTolDeg) = 0 ;
virtual bool RemoveSmallDefects( double dLinTol, double dAngTolDeg, bool bAlsoSpikes = false) = 0 ;
virtual bool RemoveUndercutOnY( double dLinTol, double dAngTolDeg) = 0 ; virtual bool RemoveUndercutOnY( double dLinTol, double dAngTolDeg) = 0 ;
virtual bool IsAPoint( void) const = 0 ; virtual bool IsAPoint( void) const = 0 ;
virtual bool IsALine( double dLinTol, Point3d& ptStart, Point3d& ptEnd) const = 0 ; virtual bool IsALine( double dLinTol, Point3d& ptStart, Point3d& ptEnd) const = 0 ;
virtual bool IsACircle( double dLinTol, Point3d& ptCen, Vector3d& vtN, double& dRad, bool& bCCW) const = 0 ; virtual bool IsACircle( double dLinTol, Point3d& ptCen, Vector3d& vtN, double& dRad, bool& bCCW) const = 0 ;
virtual bool IsARectangle( double dLinTol, Point3d& ptP, Vector3d& vtL1, Vector3d& vtL2) const = 0 ;
virtual bool IsATrapezoid( double dLinTol, Point3d& ptP, Vector3d& vtB1, Vector3d& vtL1, Vector3d& vtB2) const = 0 ;
virtual bool SetCurveTempProp( int nCrv, int nProp, int nPropInd = 0) = 0 ; virtual bool SetCurveTempProp( int nCrv, int nProp, int nPropInd = 0) = 0 ;
virtual bool GetCurveTempProp( int nCrv, int& nProp, int nPropInd = 0) const = 0 ; virtual bool GetCurveTempProp( int nCrv, int& nProp, int nPropInd = 0) const = 0 ;
virtual bool SetCurveTempParam( int nCrv, double dParam, int nParamInd = 0) = 0 ;
virtual bool GetCurveTempParam( int nCrv, double& dParam, int nParamInd = 0) const = 0 ;
virtual bool GetOnlyPoint( Point3d& ptStart) const = 0 ;
virtual bool ReplaceSingleCurve( int nSubCrv, ICurve* pNewCurve, double dTolStartEnd, double dTolAlong = INFINITO) = 0 ;
} ; } ;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -77,6 +90,39 @@ inline ICurveComposite* GetCurveComposite( IGeoObj* pGObj)
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO) { if ( pGObj == nullptr || pGObj->GetType() != CRV_COMPO)
return nullptr ; return nullptr ;
return (static_cast<ICurveComposite*>(pGObj)) ; } return (static_cast<ICurveComposite*>(pGObj)) ; }
inline ICurveComposite* ConvertCurveToComposite( IGeoObj* pGObj)
{ if ( pGObj == nullptr || ( pGObj->GetType() & GEO_CURVE) == 0) {
delete pGObj ;
return nullptr ;
}
ICurveComposite* pCrvCo = GetCurveComposite( pGObj) ;
if ( pCrvCo != nullptr) {
return pCrvCo ;
}
else {
pCrvCo = CreateCurveComposite() ;
if ( pCrvCo == nullptr) {
delete pGObj ;
return nullptr ;
}
}
ICurve* pCrv = static_cast<ICurve*>( pGObj) ;
Vector3d vtExtr ;
if ( pCrv->GetExtrusion( vtExtr) && ! vtExtr.IsSmall())
pCrvCo->SetExtrusion( vtExtr) ;
double dThick ;
if ( pCrv->GetThickness( dThick) && abs( dThick) > EPS_SMALL)
pCrvCo->SetThickness( dThick) ;
for ( int i = 0 ; i < 2 ; ++ i) {
int nProp = pCrv->GetTempProp( i) ;
if ( nProp != 0)
pCrvCo->SetTempProp( nProp, i) ;
double dParam = pCrv->GetTempParam( i) ;
pCrvCo->SetTempParam( dParam, i) ;
}
pCrvCo->AddCurve( pCrv) ;
return pCrvCo ;
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// Raccolte di puntatori a ICurveComposite // Raccolte di puntatori a ICurveComposite
+8 -1
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2013 // EgalTech 2013-2013
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkCurveLine.h Data : 22.11.13 Versione : 1.3a1 // File : EGkCurveLine.h Data : 22.11.13 Versione : 1.3a1
// Contenuto : Dichiarazione della interfaccia ICurveLine. // Contenuto : Dichiarazione della interfaccia ICurveLine.
// //
// //
@@ -45,3 +45,10 @@ inline ICurveLine* GetCurveLine( IGeoObj* pGObj)
{ if ( pGObj == nullptr || pGObj->GetType() != CRV_LINE) { if ( pGObj == nullptr || pGObj->GetType() != CRV_LINE)
return nullptr ; return nullptr ;
return (static_cast<ICurveLine*>(pGObj)) ; } return (static_cast<ICurveLine*>(pGObj)) ; }
//----------------------------------------------------------------------------
// Raccolte di puntatori a ICurveLine
typedef std::vector<const ICurveLine*> CICRVLINEVECTOR ; // vettore di puntatori a const ICurveLine
typedef std::vector<ICurveLine*> ICRVLINEPVECTOR ; // vettore di puntatori a ICurveLine
typedef std::list<ICurveLine*> ICRVLINEPLIST ; // lista di puntatori a ICurveLine
typedef std::vector<PtrOwner<ICurveLine>> ICRVLINEPOVECTOR ; // vettore di puntatori esclusivi a ICurveLine
+3 -3
View File
@@ -14,7 +14,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EGkCurve.h" #include "/EgtDev/Include/EGkCurve.h"
#include "/EgtDEv/Include/EgkGeomDB.h" #include "/EgtDEv/Include/EGkGeomDB.h"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class CurveLocal class CurveLocal
@@ -23,7 +23,7 @@ class CurveLocal
CurveLocal( IGeomDB* pGeomDB, int nCrvId, const Frame3d& frLoc) CurveLocal( IGeomDB* pGeomDB, int nCrvId, const Frame3d& frLoc)
: m_pCrv( nullptr), m_pCopy( nullptr) : m_pCrv( nullptr), m_pCopy( nullptr)
{ // verifica dei parametri { // verifica dei parametri
if ( pGeomDB == nullptr || &frLoc == nullptr) if ( pGeomDB == nullptr)
return ; return ;
// recupero riferimento della curva // recupero riferimento della curva
Frame3d frCrv ; Frame3d frCrv ;
@@ -76,7 +76,7 @@ class CurveLocal
return ; return ;
m_pCrv = m_pCopy ; m_pCrv = m_pCopy ;
} }
CurveLocal( CurveLocal&& Other) CurveLocal( CurveLocal&& Other) noexcept
: m_pCrv( Other.m_pCrv), m_pCopy( Other.m_pCopy) : m_pCrv( Other.m_pCrv), m_pCopy( Other.m_pCopy)
{ // annullo gli originali { // annullo gli originali
Other.m_pCrv = nullptr ; Other.m_pCrv = nullptr ;
+3 -2
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2013 // EgalTech 2013-2013
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkCurvePointDiffGeom.h Data : 26.12.13 Versione : 1.4l4 // File : EGkCurvePointDiffGeom.h Data : 26.12.13 Versione : 1.4l4
// Contenuto : Tipi generali per calcoli geometrici. // Contenuto : Tipi generali per calcoli geometrici.
// //
// //
@@ -40,7 +40,8 @@ class CrvPointDiffGeom
double dCurv ; double dCurv ;
public : public :
CrvPointDiffGeom( void) { nStatus = NONE ; nFlag = STD ; } CrvPointDiffGeom( void)
: nStatus( NONE), nFlag( STD), dU( -1), dCurv( -1) {}
} ; } ;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
+60
View File
@@ -0,0 +1,60 @@
//----------------------------------------------------------------------------
// EgalTech 2020-2024
//----------------------------------------------------------------------------
// File : EGkDistLineLine.h Data : 10.05.24 Versione : 2.6e31
// Contenuto : Dichiarazione della classe distanza fra elementi lineari.
//
//
//
// Modifiche : 06.11.20 LM Creazione modulo.
// 10.05.24 DS Portata in Include.
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkPoint3d.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
class DistLineLine
{
public :
EGK_EXPORT DistLineLine( const Point3d& ptSt1, const Point3d& ptEn1,
const Point3d& ptSt2, const Point3d& ptEn2,
bool bIsSegment1 = true, bool bIsSegment2 = true) ;
EGK_EXPORT DistLineLine( const Point3d& ptSt1, const Vector3d& vtD1, double dLen1,
const Point3d& ptSt2, const Vector3d& vtD2, double dLen2,
bool bIsSegment1 = true, bool bIsSegment2 = true) ;
public :
EGK_EXPORT bool GetSqDist( double& dSqDist) const ;
EGK_EXPORT bool GetDist( double& dDist) const ;
EGK_EXPORT bool IsEpsilon( double dTol) const
{ double dSqDist ; return ( GetSqDist( dSqDist) && ( dSqDist < SQ_EPS_ZERO || dSqDist < dTol * dTol)) ; }
EGK_EXPORT bool IsSmall( void) const
{ return IsEpsilon( EPS_SMALL) ; }
EGK_EXPORT bool IsZero( void) const
{ return IsEpsilon( EPS_ZERO) ; }
EGK_EXPORT bool GetMinDistPoints( Point3d& ptMinDist1, Point3d& ptMinDist2) const ;
EGK_EXPORT bool GetPositionsAtMinDistPoints( double& dPos1, double& dPos2) const ;
private :
void Calculate( const Point3d& ptSt1, const Vector3d& vtD1, double dLen1,
const Point3d& ptSt2, const Vector3d& vtD2, double dLen2,
bool bIsSegment1, bool bIsSegment2) ;
private:
double m_dSqDist ;
mutable double m_dDist ;
double m_dPos1 ;
double m_dPos2 ;
Point3d m_ptMinDist1 ;
Point3d m_ptMinDist2 ;
} ;
+19 -19
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2014 // EgalTech 2013-2024
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkDistPointCurve.h Data : 02.01.14 Versione : 1.5a1 // File : EGkDistPointCurve.h Data : 20.05.24 Versione : 2.6e5
// Contenuto : Dichiarazione della classe distanza punto da Curva. // Contenuto : Dichiarazione della classe distanza punto da Curva.
// //
// //
@@ -49,25 +49,25 @@ class DistPointCurve
// Il flag bIsSegment vale solo per linee. // Il flag bIsSegment vale solo per linee.
public : public :
EGK_EXPORT bool GetSqDist( double& dSqDist) ; EGK_EXPORT bool GetSqDist( double& dSqDist) const ;
EGK_EXPORT bool GetDist( double& dDist) ; EGK_EXPORT bool GetDist( double& dDist) const ;
EGK_EXPORT bool IsEpsilon( double dTol) EGK_EXPORT bool IsEpsilon( double dTol) const
{ double dSqDist ; return ( GetSqDist( dSqDist) && ( dSqDist < SQ_EPS_ZERO || dSqDist < dTol * dTol)) ; } { double dSqDist ; return ( GetSqDist( dSqDist) && ( dSqDist < SQ_EPS_ZERO || dSqDist < dTol * dTol)) ; }
EGK_EXPORT bool IsSmall( void) EGK_EXPORT bool IsSmall( void) const
{ return IsEpsilon( EPS_SMALL) ; } { return IsEpsilon( EPS_SMALL) ; }
EGK_EXPORT bool IsZero( void) EGK_EXPORT bool IsZero( void) const
{ return IsEpsilon( EPS_ZERO) ; } { return IsEpsilon( EPS_ZERO) ; }
EGK_EXPORT int GetNbrMinDist( void) { return (int) m_Info.size() ; } EGK_EXPORT int GetNbrMinDist( void) const
EGK_EXPORT bool GetMinDistPoint( int nInd, Point3d& ptMinDist, int& nFlag) ; { return (int) m_Info.size() ; }
EGK_EXPORT bool GetMinDistPoint( double dNearParam, Point3d& ptMinDist, int& nFlag) ; EGK_EXPORT bool GetMinDistPoint( int nInd, Point3d& ptMinDist, int& nFlag) const ;
EGK_EXPORT bool GetParamAtMinDistPoint( int nInd, double& dParam, int& nFlag) ; EGK_EXPORT bool GetMinDistPoint( double dNearParam, Point3d& ptMinDist, int& nFlag) const ;
EGK_EXPORT bool GetParamAtMinDistPoint( double dNearParam, double& dParam, int& nFlag) ; EGK_EXPORT bool GetParamAtMinDistPoint( int nInd, double& dParam, int& nFlag) const ;
EGK_EXPORT bool GetSideAtMinDistPoint( int nInd, const Vector3d& vtN, int& nSide) ; EGK_EXPORT bool GetParamAtMinDistPoint( double dNearParam, double& dParam, int& nFlag) const ;
EGK_EXPORT bool GetSideAtMinDistPoint( double dNearParam, const Vector3d& vtN, int& nSide) ; EGK_EXPORT bool GetSideAtMinDistPoint( int nInd, const Vector3d& vtN, int& nSide, double dTol = EPS_SMALL) const ;
EGK_EXPORT bool GetMinDistInfo( int nInd, MinDistPCInfo& aInfo) ; EGK_EXPORT bool GetSideAtMinDistPoint( double dNearParam, const Vector3d& vtN, int& nSide, double dTol = EPS_SMALL) const ;
EGK_EXPORT bool GetMinDistInfo( int nInd, MinDistPCInfo& aInfo) const ;
private : private :
DistPointCurve( void) ;
void LineCalculate( const Point3d& ptP, const ICurve& Curve, bool bIsSegment) ; void LineCalculate( const Point3d& ptP, const ICurve& Curve, bool bIsSegment) ;
void ArcCalculate( const Point3d& ptP, const ICurve& Curve) ; void ArcCalculate( const Point3d& ptP, const ICurve& Curve) ;
void CrvBezierCalculate( const Point3d& ptP, const ICurve& Curve) ; void CrvBezierCalculate( const Point3d& ptP, const ICurve& Curve) ;
+65
View File
@@ -0,0 +1,65 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2024
//----------------------------------------------------------------------------
// File : EGkDistPointLine.h Data : 20.05.24 Versione : 2.6e5
// Contenuto : Dichiarazione della classe distanza punto da linea/segmento.
//
//
//
// Modifiche : 30.12.12 DS Creazione modulo.
// 20.05.24 DS Pubblicato in Include.
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkPoint3d.h"
#include "/EgtDev/Include/EGkCurveLine.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
class DistPointLine
{
friend class DistPointCurve ;
public :
EGK_EXPORT DistPointLine( const Point3d& ptP,
const ICurveLine& crvLine, bool bIsSegment = true) ;
EGK_EXPORT DistPointLine( const Point3d& ptP,
const Point3d& ptIni, const Point3d& ptFin, bool bIsSegment = true) ;
EGK_EXPORT DistPointLine( const Point3d& ptP,
const Point3d& ptIni, const Vector3d& vtDir, double dLen, bool bIsSegment = true) ;
public :
EGK_EXPORT bool GetSqDist( double& dSqDist) const ;
EGK_EXPORT bool GetDist( double& dDist) const ;
EGK_EXPORT bool IsEpsilon( double dTol) const
{ double dSqDist ; return ( GetSqDist( dSqDist) && ( dSqDist < SQ_EPS_ZERO || dSqDist < dTol * dTol)) ; }
EGK_EXPORT bool IsSmall( void) const
{ return IsEpsilon( EPS_SMALL) ; }
EGK_EXPORT bool IsZero( void) const
{ return IsEpsilon( EPS_ZERO) ; }
EGK_EXPORT int GetNbrMinDist( void) const
{ return (( m_dSqDist < 0) ? 0 : 1) ; }
EGK_EXPORT bool GetMinDistPoint( Point3d& ptMinDist) const ;
EGK_EXPORT bool GetParamAtMinDistPoint( double& dParam) const ;
private :
void Calculate( const Point3d& ptP,
const Point3d& ptIni, const Vector3d& vtDir, double dLen, bool bIsSegment) ;
private :
double m_dSqDist ;
mutable double m_dDist ;
double m_dParam ;
Point3d m_ptMinDist ;
} ;
+67
View File
@@ -0,0 +1,67 @@
//----------------------------------------------------------------------------
// EgalTech 2018-2023
//----------------------------------------------------------------------------
// File : EgkDistPointSurfBz.cpp Data : 29.10.25 Versione : 2.7j3
// Contenuto : Dichiarazione della classe distanza Punto da superficie di Bezier.
//
//
//
// Modifiche : 29.10.25 DB Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkSurfBezier.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
// Calcola la distanza tra punto e superficie bezier.
// Risultati :
// - distanza
// - punto sulla superficie a minima distanza
// - corrispettivo punto nello spazio parametrico
// - normale alla superficie in quel punto
// - indicazione se il punto di riferimento è dalla parte interna o esterna della superficie ( se chiusa ).
// - indicazione se il punto di riferimento è a destra o sinistra della superficie ( se aperta )
//----------------------------------------------------------------------------
class DistPointSurfBz
{
public :
EGK_EXPORT DistPointSurfBz( const Point3d& ptP, const ISurfBezier& srfBz) ;
public :
EGK_EXPORT bool GetDist( double& dDist) const ;
EGK_EXPORT bool IsEpsilon( double dTol) const
{ return ( m_dDist >= 0. && ( m_dDist < EPS_ZERO || m_dDist < dTol)) ; }
EGK_EXPORT bool IsSmall( void) const
{ return IsEpsilon( EPS_SMALL) ; }
EGK_EXPORT bool IsZero( void) const
{ return IsEpsilon( EPS_ZERO) ; }
EGK_EXPORT bool GetMinDistPoint( Point3d& ptMinDistPoint) const ;
EGK_EXPORT bool GetParamsAtMinDistPoint( double& dU, double& dV) const ;
EGK_EXPORT bool GetNorm( Vector3d& vtN) const ;
EGK_EXPORT bool IsPointInside( void) const
{ return ( m_bIsInside && m_bIsSurfClosed) ; }
EGK_EXPORT bool IsPointOnLeftSide( void) const
{ return m_bIsInside ;}
private :
void Calculate( const Point3d& ptP, const ISurfBezier& srfBz) ;
private :
double m_dDist ; // Minima distanza del punto dalla superficie
Point3d m_ptMinDistPoint ; // Punto sulla superficie a minima distanza
Point3d m_ptParam ; // punto corrispondente nello spazio parametrico (x->U, y->V)
Vector3d m_vtN ; // normale alla superficie nel punto a minima distanza
bool m_bIsInside ; // Flag per punto interno o esterno alla superficie ( se chiusa )
bool m_bIsSurfClosed ; // Flag per superficie aperta o chiusa
} ;
+72
View File
@@ -0,0 +1,72 @@
//----------------------------------------------------------------------------
// EgalTech 2024-2024
//----------------------------------------------------------------------------
// File : EGkDistPointSurfFr.h Data : 18.07.24 Versione : 2.6g5
// Contenuto : Dichiarazione della classe distanza Punto da FlatRegion.
//
//
//
// Modifiche : 18.07.24 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
// Calcola la distanza tra punto e Flat Region.
// Risultati :
// - distanza
// - punto sulla superficie a minima distanza
// - indici del chunk e del loop e parametro del punto di frontiera a minima distanza
// - indicazione se il punto passato è sul bordo (PRS_ON), interno (PRS_IN) o esterno (PRS_OUT) alla regione.
// Note :
// - nel caso di più punti di frontiera vicini, ne viene calcolato solo uno
// - se il punto non giace nel piano della Regione
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
enum PrSide { PRS_IN = -1, PRS_ON = 0, PRS_OUT = +1} ;
// Corrispondono a MDS_LEFT, MDS_ON e MDS_RIGHT per giacitura punto rispetto a curva.
//----------------------------------------------------------------------------
class DistPointSurfFr
{
public :
EGK_EXPORT DistPointSurfFr( const Point3d& ptP, const ISurfFlatRegion& frSurf) ;
public :
EGK_EXPORT bool GetDist( double& dDist) const ;
EGK_EXPORT bool GetDistOnRegionPlane( double& dDist) const ;
EGK_EXPORT bool GetPointAtMinDist( Point3d& ptMinDistPoint) const ;
EGK_EXPORT bool GetParamAtMinDist( int& nMinChunk, int& nMinLoop, double& dMinPar) const ;
EGK_EXPORT bool GetSideAtMinDist( int& nSide) const ;
private :
void Calculate( const Point3d& ptP, const ISurfFlatRegion& frSurf) ;
private :
double m_dDist ;
double m_dDistOnPlane ;
int m_nMinChunk ;
int m_nMinLoop ;
double m_dMinPar ;
Point3d m_ptMinDistPoint ;
int m_nSide ;
} ;
//----------------------------------------------------------------------------
// Verifica velocizzata
EGK_EXPORT bool IsPointInsideSurfFr( const Point3d& ptP, const ISurfFlatRegion* pSfr, double dMinDist, bool& bInside, int& nChunk) ;
inline bool IsPointInsideSurfFr( const Point3d& ptP, const ISurfFlatRegion* pSfr, double dMinDist, bool& bInside)
{ int nChunk ; return IsPointInsideSurfFr( ptP, pSfr, dMinDist, bInside, nChunk) ;}
+33 -15
View File
@@ -1,13 +1,13 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2018-2018 // EgalTech 2018-2023
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkDistPointTria.h Data : 11.12.18 Versione : 1.9l2 // File : EGkDistPointSurfTm.h Data : 06.07.23 Versione : 2.5g1
// Contenuto : Dichiarazione della classe distanza Punto da Trimesh. // Contenuto : Dichiarazione della classe distanza Punto da Trimesh.
// //
// //
// //
// Modifiche : 06.12.18 LM Creazione modulo. // Modifiche : 06.12.18 LM Creazione modulo.
// // 06.07.23 DS Aggiunta GetSurfTmNearestVertex.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -23,6 +23,14 @@
#define EGK_EXPORT __declspec( dllimport) #define EGK_EXPORT __declspec( dllimport)
#endif #endif
//----------------------------------------------------------------------------
// Calcola la distanza tra punto e superficie trimesh.
// Risultati :
// - distanza
// - punto sulla superficie a minima distanza
// - indice del triangolo su cui giace il punto
// - indicazione se il punto di riferimento è dalla parte interna o esterna della superficie ( se chiusa ).
// - indicazione se il punto di riferimento è a destra o sinistra della superficie ( se aperta )
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
class DistPointSurfTm class DistPointSurfTm
{ {
@@ -30,24 +38,34 @@ class DistPointSurfTm
EGK_EXPORT DistPointSurfTm( const Point3d& ptP, const ISurfTriMesh& tmSurf) ; EGK_EXPORT DistPointSurfTm( const Point3d& ptP, const ISurfTriMesh& tmSurf) ;
public : public :
EGK_EXPORT bool GetDist( double& dDist) ; EGK_EXPORT bool GetDist( double& dDist) const ;
EGK_EXPORT bool IsEpsilon( double dTol) EGK_EXPORT bool IsEpsilon( double dTol) const
{ return ( m_dDist >= 0. && ( m_dDist < EPS_ZERO || m_dDist < dTol)) ; } { return ( m_dDist >= 0. && ( m_dDist < EPS_ZERO || m_dDist < dTol)) ; }
EGK_EXPORT bool IsSmall( void) EGK_EXPORT bool IsSmall( void) const
{ return IsEpsilon( EPS_SMALL) ; } { return IsEpsilon( EPS_SMALL) ; }
EGK_EXPORT bool IsZero( void) EGK_EXPORT bool IsZero( void) const
{ return IsEpsilon( EPS_ZERO) ; } { return IsEpsilon( EPS_ZERO) ; }
EGK_EXPORT bool GetMinDistPoint( Point3d& ptMinDistPoint) ; EGK_EXPORT bool GetMinDistPoint( Point3d& ptMinDistPoint) const ;
EGK_EXPORT bool GetMinDistTriaIndex( int& nMinDistTriaIndex) ; EGK_EXPORT bool GetMinDistTriaIndex( int& nMinDistTriaIndex) const ;
EGK_EXPORT bool IsPointInside( void) EGK_EXPORT bool GetMinDistTriaIndices( INTVECTOR& vMinDistTriaIndex) const ;
{ return m_bIsInside ; } EGK_EXPORT bool IsPointInside( void) const
{ return ( m_bIsInside && m_bIsSurfClosed) ; }
EGK_EXPORT bool IsPointOnLeftSide( void) const
{ return m_bIsInside ;}
private : private :
void Calculate( const Point3d& ptP, const ISurfTriMesh& tmSurf) ; void Calculate( const Point3d& ptP, const ISurfTriMesh& tmSurf) ;
private : private :
double m_dDist ; double m_dDist ; // Minima distanza del punto dalla superficie
Point3d m_ptMinDistPoint ; Point3d m_ptMinDistPoint ; // Punto sulla superficie a minima distanza
int m_nMinDistTriaIndex ; int m_nMinDistTriaIndex ; // Triangolo utilizzato per calcolare il punto a minima distanza
bool m_bIsInside ; INTVECTOR m_vnMinDistTriaIndex ; // Indici dei triangoli a minima distanza
bool m_bIsInside ; // Flag per punto interno o esterno alla superficie ( se chiusa )
bool m_bIsSurfClosed ; // Flag per superficie aperta o chiusa
} ; } ;
//----------------------------------------------------------------------------
// Calcola l'indice del vertice della superficie a minima distanza dal punto di riferimento.
//----------------------------------------------------------------------------
EGK_EXPORT int GetSurfTmNearestVertex( const Point3d& ptP, const ISurfTriMesh& tmSurf) ;
+8 -3
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2014-2020 // EgalTech 2014-2025
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkDllMain.h Data : 19.09.20 Versione : 2.2i2 // File : EGkDllMain.h Data : 11.09.25 Versione : 2.7i2
// Contenuto : Prototipi funzioni generali della DLL. // Contenuto : Prototipi funzioni generali della DLL.
// //
// //
@@ -9,6 +9,7 @@
// Modifiche : 21.11.13 DS Creazione modulo. // Modifiche : 21.11.13 DS Creazione modulo.
// 13.01.15 DS Agg. funzioni Get sui font. // 13.01.15 DS Agg. funzioni Get sui font.
// 19.09.20 DS Agg. funzione SetEGkDebugLev. // 19.09.20 DS Agg. funzione SetEGkDebugLev.
// 11.09.25 DS Agg. funzione SetDefaultFont.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -38,11 +39,15 @@ EGK_EXPORT void SetEGkLogger( ILogger* pLogger) ;
EGK_EXPORT void SetEGkKey( const std::string& sKey) ; EGK_EXPORT void SetEGkKey( const std::string& sKey) ;
// imposta il tipo di chiave di protezione // imposta il tipo di chiave di protezione
EGK_EXPORT void SetEGkKeyType( int nType) ; EGK_EXPORT void SetEGkKeyType( int nType) ;
// imposta se chiave hardware di rete
EGK_EXPORT void SetEGkNetHwKey( bool bNetHwKey) ;
// permette di inizializzare il font manager // permette di inizializzare il font manager
EGK_EXPORT void InitFontManager( const std::string& sNfeFontDir, const std::string& sDefaultFont) ; EGK_EXPORT void InitFontManager( const std::string& sNfeFontDir, const std::string& sDefaultFont) ;
// imposta il font di default
EGK_EXPORT void SetDefaultFont( const std::string& sDefaultFont) ;
// restituisce il direttorio dei font proprietari (Nfe) // restituisce il direttorio dei font proprietari (Nfe)
EGK_EXPORT const std::string& GetNfeFontDir( void) ; EGK_EXPORT const std::string& GetNfeFontDir( void) ;
// restituisce il nome del font di default // restituisce il nome del font di default
EGK_EXPORT const std::string& GetDefaultFont( void) ; EGK_EXPORT const std::string& GetDefaultFont( void) ;
// imposto il gestore eventi // imposto il gestore eventi
EGK_EXPORT bool SetEGkProcessEvents( pfProcEvents pFun) ; EGK_EXPORT bool SetEGkProcessEvents( psfProcEvents pFun) ;
+10
View File
@@ -32,6 +32,15 @@ class __declspec( novtable) IExtDimension : public IGeoObj
int nDecDigit, const std::string& sFont, double dTextHeight) = 0 ; int nDecDigit, const std::string& sFont, double dTextHeight) = 0 ;
virtual bool SetLinear( const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptPos, virtual bool SetLinear( const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptPos,
const Vector3d& vtN, const Vector3d& vtDir, const std::string& sText) = 0 ; const Vector3d& vtN, const Vector3d& vtDir, const std::string& sText) = 0 ;
virtual bool SetRadial( const Point3d& ptCen, const Point3d& ptPos,
const Vector3d& vtN, const std::string& sText) = 0 ;
virtual bool SetDiametral( const Point3d& ptCen, const Point3d& ptPos,
const Vector3d& vtN, const std::string& sText) = 0 ;
virtual bool SetAngular( const Point3d& ptV, const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptPos,
const Vector3d& vtN, const std::string& sText) = 0 ;
virtual bool SetAngularEx( const Point3d& ptV1, const Point3d& ptP1,
const Point3d& ptV2, const Point3d& ptP2, const Point3d& ptPos,
const Vector3d& vtN, const std::string& sText) = 0 ;
virtual const Vector3d& GetNormVersor( void) const = 0 ; virtual const Vector3d& GetNormVersor( void) const = 0 ;
virtual const Vector3d& GetDirVersor( void) const = 0 ; virtual const Vector3d& GetDirVersor( void) const = 0 ;
virtual const std::string& GetText( void) const = 0 ; virtual const std::string& GetText( void) const = 0 ;
@@ -49,6 +58,7 @@ class __declspec( novtable) IExtDimension : public IGeoObj
virtual double GetTextHeight( void) const = 0 ; virtual double GetTextHeight( void) const = 0 ;
virtual bool GetMidPoint( Point3d& ptMid) const = 0 ; virtual bool GetMidPoint( Point3d& ptMid) const = 0 ;
virtual bool GetCenterPoint( Point3d& ptCen) const = 0 ; virtual bool GetCenterPoint( Point3d& ptCen) const = 0 ;
virtual const std::string& GetSubType( void) const = 0 ;
virtual bool ApproxWithLines( double dLinTol, double dAngTolDeg, POLYLINELIST& lstPL) const = 0 ; virtual bool ApproxWithLines( double dLinTol, double dAngTolDeg, POLYLINELIST& lstPL) const = 0 ;
} ; } ;
+77 -24
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2014 // EgalTech 2013-2023
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkFrame3d.h Data : 30.05.14 Versione : 1.5e10 // File : EGkFrame3d.h Data : 20.07.23 Versione : 2.5g2
// Contenuto : Dichiarazione della classe Reference Frame 3d. // Contenuto : Dichiarazione della classe Reference Frame 3d.
// //
// //
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EGKPoint3d.h" #include "/EgtDev/Include/EGkPoint3d.h"
//----------------------- Macro per import/export ---------------------------- //----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT #undef EGK_EXPORT
@@ -30,8 +30,8 @@ class EGK_EXPORT Frame3d
enum Type { ERR = 0, TOP = 1, BOTTOM = 2, FRONT = 3, enum Type { ERR = 0, TOP = 1, BOTTOM = 2, FRONT = 3,
BACK = 4, LEFT = 5, RIGHT = 6, GEN = 7} ; BACK = 4, LEFT = 5, RIGHT = 6, GEN = 7} ;
public : public :
Frame3d( void) Frame3d( bool bGlob = true)
: m_nType( TOP), m_nZType( TOP), m_ptOrig( ORIG), : m_nType( bGlob ? TOP : ERR), m_nZType( bGlob ? TOP : ERR), m_ptOrig( ORIG),
m_vtVersX( X_AX), m_vtVersY( Y_AX), m_vtVersZ( Z_AX) {} m_vtVersX( X_AX), m_vtVersY( Y_AX), m_vtVersZ( Z_AX) {}
Frame3d( const Point3d& ptOrig) Frame3d( const Point3d& ptOrig)
: m_nType( TOP), m_nZType( TOP), m_ptOrig( ptOrig), : m_nType( TOP), m_nZType( TOP), m_ptOrig( ptOrig),
@@ -43,7 +43,7 @@ class EGK_EXPORT Frame3d
bool Set( const Point3d& ptOrig, const Vector3d& vtDirZ, const Vector3d& vtNearDirX) ; bool Set( const Point3d& ptOrig, const Vector3d& vtDirZ, const Vector3d& vtNearDirX) ;
bool Set( const Point3d& ptOrig, Type nType) ; bool Set( const Point3d& ptOrig, Type nType) ;
bool Set( const Point3d& ptOrig, double dAngCDeg, double dAngADeg, double dAngC1Deg) ; bool Set( const Point3d& ptOrig, double dAngCDeg, double dAngADeg, double dAngC1Deg) ;
bool Reset( void) ; bool Reset( bool bGlob = true) ;
bool ChangeOrig( const Point3d& ptOrig) ; bool ChangeOrig( const Point3d& ptOrig) ;
bool Translate( const Vector3d& vtMove) ; bool Translate( const Vector3d& vtMove) ;
bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dAngDeg) ; bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dAngDeg) ;
@@ -56,23 +56,23 @@ class EGK_EXPORT Frame3d
bool ToLoc( const Frame3d& frRef) ; bool ToLoc( const Frame3d& frRef) ;
bool LocToLoc( const Frame3d& frOri, const Frame3d& frDest) ; bool LocToLoc( const Frame3d& frOri, const Frame3d& frDest) ;
Frame3d& operator*=( const Frame3d& frRef) Frame3d& operator*=( const Frame3d& frRef)
{ this->ToGlob( frRef) ; return *this ;} { ToGlob( frRef) ; return *this ; }
Frame3d& operator/=( const Frame3d& frRef) Frame3d& operator/=( const Frame3d& frRef)
{ this->ToLoc( frRef) ; return *this ;} { ToLoc( frRef) ; return *this ; }
bool IsValid( void) const bool IsValid( void) const
{ return ( m_nType != ERR) ; } { return ( m_nType != ERR) ; }
int GetType( void) const int GetType( void) const
{ return m_nType ;} { return m_nType ; }
int GetZType( void) const int GetZType( void) const
{ return m_nZType ;} { return m_nZType ; }
const Point3d& Orig( void) const const Point3d& Orig( void) const
{ return m_ptOrig ;} { return m_ptOrig ; }
const Vector3d& VersX( void) const const Vector3d& VersX( void) const
{ return m_vtVersX ;} { return m_vtVersX ; }
const Vector3d& VersY( void) const const Vector3d& VersY( void) const
{ return m_vtVersY ;} { return m_vtVersY ; }
const Vector3d& VersZ( void) const const Vector3d& VersZ( void) const
{ return m_vtVersZ ;} { return m_vtVersZ ; }
bool GetRotationsCAC1( double& dAngC, double& dAngA, double& dAngC1) const ; bool GetRotationsCAC1( double& dAngC, double& dAngA, double& dAngC1) const ;
bool GetFixedAxesRotationsABC( double& dAngADeg, double& dAngBDeg, double& dAngCDeg) const ; bool GetFixedAxesRotationsABC( double& dAngADeg, double& dAngBDeg, double& dAngCDeg) const ;
@@ -97,23 +97,67 @@ const Frame3d GLOB_FRM ;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// Prodotto di due frame (porta il primo dal secondo nel globale) // Prodotto di due frame (porta il primo dal secondo nel globale)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline Frame3d inline const Frame3d
operator*( const Frame3d& frRef1, const Frame3d& frRef2) operator*( const Frame3d& frRef, const Frame3d& frOri)
{ {
Frame3d frRefR = frRef1 ; Frame3d frNew = frRef ;
frRefR.ToGlob( frRef2) ; frNew.ToGlob( frOri) ;
return frRefR ; return frNew ;
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// Divisione di due frame (porta il primo dal globale nel secondo) // Divisione di due frame (porta il primo dal globale nel secondo)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline Frame3d inline const Frame3d
operator/( const Frame3d& frRef1, const Frame3d& frRef2) operator/( const Frame3d& frRef, const Frame3d& frDest)
{ {
Frame3d frRefR = frRef1 ; Frame3d frNew = frRef ;
frRefR.ToLoc( frRef2) ; frNew.ToLoc( frDest) ;
return frRefR ; return frNew ;
}
//----------------------------------------------------------------------------
//! Restituisce il frame inverso di quello passato
//----------------------------------------------------------------------------
inline const Frame3d
GetInvert( const Frame3d& frRef)
{
Frame3d frNew = GLOB_FRM ;
frNew.ToLoc( frRef) ;
return frNew ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia in locale del frame passato
//----------------------------------------------------------------------------
inline const Frame3d
GetToLoc( const Frame3d& frRef, const Frame3d& frDest)
{
Frame3d frNew = frRef ;
frNew.ToLoc( frDest) ;
return frNew ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia in globale del frame passato
//----------------------------------------------------------------------------
inline const Frame3d
GetToGlob( const Frame3d& frRef, const Frame3d& frOri)
{
Frame3d frNew = frRef ;
frNew.ToGlob( frOri) ;
return frNew ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia dal primo al secondo riferimento del frame passato
//----------------------------------------------------------------------------
inline const Frame3d
GetLocToLoc( const Frame3d& frRef, const Frame3d& frOri, const Frame3d& frDest)
{
Frame3d frNew = frRef ;
frNew.LocToLoc( frOri, frDest) ;
return frNew ;
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -134,3 +178,12 @@ AreSameFrame( const Frame3d& frRef1, const Frame3d& frRef2)
return false ; return false ;
return true ; return true ;
} }
//----------------------------------------------------------------------------
// Verifica se il riferimento coincide con quello globale (o identità)
//----------------------------------------------------------------------------
inline bool
IsGlobFrame( const Frame3d& frRef)
{
return AreSameFrame( frRef, GLOB_FRM) ;
}
+11 -7
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2014 // EgalTech 2013-2014
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkGdbConst.h Data : 17.06.14 Versione : 1.5f5 // File : EGkGdbConst.h Data : 17.06.14 Versione : 1.5f5
// Contenuto : Costanti generali per DB geometrico. // Contenuto : Costanti generali per DB geometrico.
// //
// //
@@ -34,7 +34,8 @@ enum GdbInsPos { GDB_FIRST_SON = 0,
//----------------- Costanti tipo salvataggio del DB geometrico ---------------- //----------------- Costanti tipo salvataggio del DB geometrico ----------------
enum GdbSave { GDB_SV_TXT = 0, enum GdbSave { GDB_SV_TXT = 0,
GDB_SV_BIN = 1, GDB_SV_BIN = 1,
GDB_SV_CMPTXT = 2} ; GDB_SV_CMPTXT = 2,
GDB_SV_CMPBIN = 3} ;
//----------------- Costanti tipo oggetti del DB geometrico -------------------- //----------------- Costanti tipo oggetti del DB geometrico --------------------
enum GdbType { GDB_TY_NONE = 0, enum GdbType { GDB_TY_NONE = 0,
@@ -58,7 +59,8 @@ enum GdbStatus { GDB_ST_OFF = 0,
//----------------- Costanti marcatura oggetti del DB geometrico --------------- //----------------- Costanti marcatura oggetti del DB geometrico ---------------
enum GdbMark { GDB_MK_OFF = 0, enum GdbMark { GDB_MK_OFF = 0,
GDB_MK_ON = 1} ; GDB_MK_ON = 1,
GDB_MK_ON_2 = 2} ;
//----------------- Costante per numero proprietà temporanee ------------------- //----------------- Costante per numero proprietà temporanee -------------------
const int GDB_NUM_TEMP_PROP = 2 ; const int GDB_NUM_TEMP_PROP = 2 ;
@@ -83,7 +85,9 @@ const std::string GDB_SI_LIST = "!LST" ; // Vettore Id entit
const std::string GDB_SI_COPY = "!COP" ; // Id entità const std::string GDB_SI_COPY = "!COP" ; // Id entità
const std::string GDB_SI_MGRPONLY = "!MGO" ; // Id entità const std::string GDB_SI_MGRPONLY = "!MGO" ; // Id entità
const std::string GDB_SI_DRAWMODE = "!DRM" ; // Flag const std::string GDB_SI_DRAWMODE = "!DRM" ; // Flag
const std::string GDB_SI_DUPSOU = "!DSOU" ; // Id entità const std::string GDB_SI_DUPSOU = "!DSOU" ; // Duplo Id entità originale
const std::string GDB_SI_DUPLIST = "!DLST" ; // Vettore Id entità const std::string GDB_SI_DUPLIST = "!DLST" ; // Duplo Vettore Id entità duplicate
const std::string GDB_SI_DUPMODIF = "!DMOD" ; // Flag const std::string GDB_SI_DUPMODIF = "!DMOD" ; // Flag di sorgente per duplo modificato
const std::string GDB_SI_DUPLOCKED = "!DLOK" ; // Flag di duplo bloccato (da non aggiornare seguendo originale)
const std::string GDB_SI_DUPTOUPDATE = "!DTUP" ; // Flag di duplo da aggiornare quando sbloccato
const std::string GDB_SI_SHOWEDGES = "!SEDG" ; // Flag per forzare visualizzazione spigoli vivi anche in shading
+2 -2
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2013 // EgalTech 2013-2013
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkGdbExecutor.h Data : 25.11.13 Versione : 1.3a1 // File : EGkGdbExecutor.h Data : 25.11.13 Versione : 1.3a1
// Contenuto : Dichiarazione della interfaccia IGdbExecutor. // Contenuto : Dichiarazione della interfaccia IGdbExecutor.
// //
// //
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgnCmdExecutor.h" #include "/EgtDev/Include/EGnCmdExecutor.h"
class IGeomDB ; class IGeomDB ;
+2 -2
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2014-2014 // EgalTech 2014-2014
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkGdbFunct.h Data : 13.03.14 Versione : 1.5c6 // File : EGkGdbFunct.h Data : 13.03.14 Versione : 1.5c6
// Contenuto : Funzioni generali per DB geometrico. // Contenuto : Funzioni generali per DB geometrico.
// //
// //
@@ -80,7 +80,7 @@ CalcMark( int nObjMark, int nParentMark)
if ( nObjMark == GDB_MK_OFF && nParentMark == GDB_MK_OFF) if ( nObjMark == GDB_MK_OFF && nParentMark == GDB_MK_OFF)
return GDB_MK_OFF ; return GDB_MK_OFF ;
return GDB_MK_ON ; return ( nParentMark != GDB_MK_OFF ? nParentMark : nObjMark) ;
} }
// ovviamente la marcatura si combina con lo stato, nel senso che un oggetto // ovviamente la marcatura si combina con lo stato, nel senso che un oggetto
// non visibile non viene nemmeno marcato // non visibile non viene nemmeno marcato
+11 -5
View File
@@ -1,13 +1,14 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2013 // EgalTech 2013-2023
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkGdbIterator.h Data : 04.12.13 Versione : 1.4a3 // File : EGkGdbIterator.h Data : 09.07.23 Versione : 2.5g1
// Contenuto : Dichiarazione della interfaccia IGdbIterator. // Contenuto : Dichiarazione della interfaccia IGdbIterator.
// //
// //
// //
// Modifiche : 04.12.13 DS Creazione modulo. // Modifiche : 04.12.13 DS Creazione modulo.
// // 29.01.23 DS Aggiunte GetAllInfo e CopyAllInfoFrom.
// 09.07.23 DS Aggiunte SetStipple e GetStipple.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -103,7 +104,7 @@ class __declspec( novtable) IGdbIterator
virtual bool RevertStatus( void) = 0 ; virtual bool RevertStatus( void) = 0 ;
virtual bool GetStatus( int& nStat) const = 0 ; virtual bool GetStatus( int& nStat) const = 0 ;
virtual bool GetCalcStatus( int& nStat) const = 0 ; virtual bool GetCalcStatus( int& nStat) const = 0 ;
virtual bool SetMark( void) = 0 ; virtual bool SetMark( int nMark = GDB_MK_ON) = 0 ;
virtual bool ResetMark( void) = 0 ; virtual bool ResetMark( void) = 0 ;
virtual bool GetMark( int& nMark) const = 0 ; virtual bool GetMark( int& nMark) const = 0 ;
virtual bool GetCalcMark( int& nMark) const = 0 ; virtual bool GetCalcMark( int& nMark) const = 0 ;
@@ -142,6 +143,11 @@ class __declspec( novtable) IGdbIterator
virtual bool GetInfo( const std::string& sKey, STRVECTOR& vsInfo) const = 0 ; virtual bool GetInfo( const std::string& sKey, STRVECTOR& vsInfo) const = 0 ;
virtual bool ExistsInfo( const std::string& sKey) const = 0 ; virtual bool ExistsInfo( const std::string& sKey) const = 0 ;
virtual bool RemoveInfo( const std::string& sKey) = 0 ; virtual bool RemoveInfo( const std::string& sKey) = 0 ;
virtual bool GetAllInfo( STRVECTOR& vsInfo) const = 0 ;
virtual bool CopyAllInfoFrom( const IGdbIterator& iIter) = 0 ;
// Stipple
virtual bool SetStipple( int nFactor, int nPattern) = 0 ;
virtual bool GetStipple( int& nFactor, int& nPattern) const = 0 ;
// TextureData // TextureData
virtual bool SetTextureName( const std::string& sTxrName) = 0 ; virtual bool SetTextureName( const std::string& sTxrName) = 0 ;
virtual bool SetTextureFrame( const Frame3d& frTxrRef) = 0 ; virtual bool SetTextureFrame( const Frame3d& frTxrRef) = 0 ;
@@ -156,4 +162,4 @@ class __declspec( novtable) IGdbIterator
} ; } ;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
EGK_EXPORT IGdbIterator* CreateGdbIterator( IGeomDB* pGDB = nullptr) ; EGK_EXPORT IGdbIterator* CreateGdbIterator( IGeomDB* pGDB = nullptr) ;
+38 -7
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2014-2019 // EgalTech 2014-2019
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkGeoCollection.h Data : 05.11.19 Versione : 2.1k1 // File : EGkGeoCollection.h Data : 05.11.19 Versione : 2.1k1
// Contenuto : Raccolte di oggetti geometrici. // Contenuto : Raccolte di oggetti geometrici.
// //
// //
@@ -15,6 +15,7 @@
#include "/EgtDev/Include/EGkPoint3d.h" #include "/EgtDev/Include/EGkPoint3d.h"
#include "/EgtDev/Include/EGkBBox3d.h" #include "/EgtDev/Include/EGkBBox3d.h"
#include "/EgtDev/Include/EGkFrame3d.h"
#include "/EgtDev/Include/EGkCurvePointDiffGeom.h" #include "/EgtDev/Include/EGkCurvePointDiffGeom.h"
#include "/EgtDev/Include/EgtNumCollection.h" #include "/EgtDev/Include/EgtNumCollection.h"
@@ -23,18 +24,24 @@
typedef std::vector<Point3d> PNTVECTOR ; // vettore di punti typedef std::vector<Point3d> PNTVECTOR ; // vettore di punti
typedef std::list<Point3d> PNTLIST ; // lista di punti typedef std::list<Point3d> PNTLIST ; // lista di punti
typedef std::vector<PNTVECTOR> PNTMATRIX ; // matrice di punti typedef std::vector<PNTVECTOR> PNTMATRIX ; // matrice di punti
//----------------------------------------------------------------------------
// Raccolte di coppie Point3d,int
typedef std::pair<Point3d,int> POINTI ; // coppia punto, intero
typedef std::vector<POINTI> PNTIVECTOR ; // vettore di coppie punto, intero
typedef std::list<POINTI> PNTILIST ; // lista di coppie punto, intero
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// Raccolte di coppie Point3d,dU // Raccolte di coppie Point3d,dU
typedef std::pair<Point3d,double> POINTU ; // coppia punto, parametro (o altro) typedef std::pair<Point3d,double> POINTU ; // coppia punto, parametro (o altro)
typedef std::vector<POINTU> PNTUVECTOR ; // vettore di coppie punto, parametro typedef std::vector<POINTU> PNTUVECTOR ; // vettore di coppie punto, parametro
typedef std::list<POINTU> PNTULIST ; // lista di coppie punto, parametro typedef std::list<POINTU> PNTULIST ; // lista di coppie punto, parametro
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// Raccolte di coppie Point3d,Point3d // Raccolte di coppie Point3d,Point3d
typedef std::pair<Point3d,Point3d> BIPOINT ; // coppia punto1, punto2 typedef std::pair<Point3d,Point3d> BIPOINT ; // coppia punto1, punto2
typedef std::vector<BIPOINT> BIPNTVECTOR ; // vettore di coppie punto1, punto2 typedef std::vector<BIPOINT> BIPNTVECTOR ; // vettore di coppie punto1, punto2
typedef std::list<BIPOINT> BIPNTLIST ; // lista di coppie punto1, punto2 typedef std::list<BIPOINT> BIPNTLIST ; // lista di coppie punto1, punto2
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// Raccolte di Punti di curva con loro geometria differenziale // Raccolte di Punti di curva con loro geometria differenziale
@@ -46,8 +53,32 @@ typedef std::list<CrvPointDiffGeom> CPDGLIST ; // lista di CrvPointDiffGe
typedef std::vector<Vector3d> VCT3DVECTOR ; // vettore di vettori 3d typedef std::vector<Vector3d> VCT3DVECTOR ; // vettore di vettori 3d
typedef std::list<Vector3d> VCT3DLIST ; // lista di vettori 3d typedef std::list<Vector3d> VCT3DLIST ; // lista di vettori 3d
//----------------------------------------------------------------------------
// Raccolte di Frame3d
typedef std::vector<Frame3d> FRAME3DVECTOR ; // vettore di riferimenti 3d
typedef std::list<Frame3d> FRAME3DLIST ; // lista di riferimenti 3d
typedef std::vector<std::pair<Frame3d,int>> FRAME3DIVECTOR ; // vettore di riferimenti 3d e Id
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// Raccolte di BBox3d // Raccolte di BBox3d
typedef std::vector<BBox3d> BOXVECTOR ; // vettore di bounding box 3d typedef std::vector<BBox3d> BOXVECTOR ; // vettore di bounding box 3d
typedef std::list<BBox3d> BOXLIST ; // lista di bounding box 3d typedef std::list<BBox3d> BOXLIST ; // lista di bounding box 3d
typedef std::vector<std::pair<BBox3d,int>> BOXIVECTOR ; // vettore di bounding box 3d e Id typedef std::vector<std::pair<BBox3d,int>> BOXIVECTOR ; // vettore di bounding box 3d e Id
//----------------------------------------------------------------------------
// Raccolte di coppie Point3d,Vector3d
typedef std::pair<Point3d,Vector3d> PNTVECT ; // coppia punto, vettore
typedef std::vector<PNTVECT> PNTVECTVECTOR ; // vettore di coppie punto, vettore
typedef std::list<PNTVECT> PNTVECTLIST ; // lista di coppie punto, vettore
//----------------------------------------------------------------------------
// Raccolte di coppie Point3d,Bool
typedef std::pair<Point3d, bool> PNTBOOL ; // coppia punto, bool
typedef std::vector<PNTBOOL> PNTBOOLVECTOR ; // vettore di coppie punto, bool
typedef std::list<PNTBOOL> PNTBOOLLIST ; // lista di coppie punto, bool
//----------------------------------------------------------------------------
// Raccolte di triplette Point3d,dU,vector<Vector3d>
typedef std::tuple<Point3d, double, VCT3DVECTOR> PNTUVVECT ; // tripletta punto, parametro, vettore di Vector3d
typedef std::vector<PNTUVVECT> PNTUVVECTVECTOR ; // vettore di triplette punto, parametro, vettore di Vector3d
typedef std::list<PNTUVVECT> PNTUVVECTLIST ; // lista di triplette punto, parametro, vettore di Vector3d
+9 -2
View File
@@ -1,13 +1,14 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2019 // EgalTech 2013-2025
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkGeoConst.h Data : 23.11.19 Versione : 2.1k5 // File : EGkGeoConst.h Data : 22.11.25 Versione : 2.7k4
// Contenuto : Costanti generali per calcoli geometrici. // Contenuto : Costanti generali per calcoli geometrici.
// //
// //
// //
// Modifiche : 04.01.12 DS Creazione modulo. // Modifiche : 04.01.12 DS Creazione modulo.
// 23.11.19 DS Aggiunta costante EPS_TRIA_H. // 23.11.19 DS Aggiunta costante EPS_TRIA_H.
// 22.11.25 DS Aggiunta costante PREC_SCALE_COEFF.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -33,6 +34,9 @@ const double SQ_EPS_ZERO = EPS_ZERO * EPS_ZERO ;
const double INFINITO = 1e10 ; const double INFINITO = 1e10 ;
const double SQ_INFINITO = INFINITO * INFINITO ; const double SQ_INFINITO = INFINITO * INFINITO ;
// coefficiente componente di vettore largamente predominante
const double KV_BIG = 1e5 ;
// conversione da gradi a radianti e viceversa // conversione da gradi a radianti e viceversa
const double PIGRECO = 3.14159265358979323846 ; const double PIGRECO = 3.14159265358979323846 ;
const double DEGTORAD = PIGRECO / 180. ; const double DEGTORAD = PIGRECO / 180. ;
@@ -56,3 +60,6 @@ const double SQRT2 = 1.41421356237309504880 ;
const double SQRT1_2 = 1 / SQRT2 ; const double SQRT1_2 = 1 / SQRT2 ;
const double SQRT3 = 1.73205080756887729353 ; const double SQRT3 = 1.73205080756887729353 ;
const double SQRT1_3 = 1 / SQRT3 ; const double SQRT1_3 = 1 / SQRT3 ;
// coefficiente di scalatura per aumentare precisione dei calcoli
const double PREC_SCALE_COEFF = 1024 ;
+2
View File
@@ -56,6 +56,8 @@ class __declspec( novtable) IGeoObj
virtual const IObjGraphics* GetObjGraphics( void) const = 0 ; virtual const IObjGraphics* GetObjGraphics( void) const = 0 ;
virtual void SetTempProp( int nProp, int nPropInd = 0) = 0 ; virtual void SetTempProp( int nProp, int nPropInd = 0) = 0 ;
virtual int GetTempProp( int nPropInd = 0) const = 0 ; virtual int GetTempProp( int nPropInd = 0) const = 0 ;
virtual void SetTempParam( double dParam, int nParamInd = 0) = 0 ;
virtual double GetTempParam( int nParamInd = 0) const = 0 ;
} ; } ;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
+219 -2
View File
@@ -1,12 +1,13 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2017-2017 // EgalTech 2017-2022
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkGeoObjSave.h Data : 30.10.17 Versione : 1.8j5 // File : EGkGeoObjSave.h Data : 25.04.22 Versione : 2.4d4
// Contenuto : Funzione per salvare su file un Oggetto Geometrico. // Contenuto : Funzione per salvare su file un Oggetto Geometrico.
// //
// //
// //
// Modifiche : 30.10.17 DS Creazione modulo. // Modifiche : 30.10.17 DS Creazione modulo.
// 25.04.22 DS Aggiunti controlli.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -14,12 +15,16 @@
#include "/EgtDev/Include/EGkGeomDB.h" #include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EgtPointerOwner.h" #include "/EgtDev/Include/EgtPointerOwner.h"
#include "/EgtDev/Include/EGkSurfFlatRegion.h"
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
bool bool
SaveGeoObj( IGeoObj* pGObj, const std::string& sFile, int nFlag = GDB_SV_BIN) SaveGeoObj( IGeoObj* pGObj, const std::string& sFile, int nFlag = GDB_SV_BIN)
{ {
// verifico validità oggetto
if ( pGObj == nullptr || ! pGObj->IsValid())
return false ;
// creo GeomDB temporaneo // creo GeomDB temporaneo
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ; PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
if ( IsNull( pGeomDB)) if ( IsNull( pGeomDB))
@@ -35,5 +40,217 @@ SaveGeoObj( IGeoObj* pGObj, const std::string& sFile, int nFlag = GDB_SV_BIN)
// rimuovo l'oggetto dal GeomDB // rimuovo l'oggetto dal GeomDB
bOk = ( pGeomDB->RemoveGeoObjAndErase( nId) != nullptr) && bOk ; bOk = ( pGeomDB->RemoveGeoObjAndErase( nId) != nullptr) && bOk ;
return bOk ;
}
//----------------------------------------------------------------------------
bool
SaveGeoObj( std::vector<IGeoObj*> vpGObj, const std::string& sFile, int nFlag = GDB_SV_BIN)
{
for ( int i = 0 ; i < int( vpGObj.size()); ++i) {
// verifico validità oggetto
if ( vpGObj[i] == nullptr || ! vpGObj[i]->IsValid() )
return false ;
}
// creo GeomDB temporaneo
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
if ( IsNull( pGeomDB))
return false ;
INTVECTOR vIds ;
int nLayId = 0 ;
for ( int i = 0 ; i < int( vpGObj.size()); ++i) {
// inserisco l'oggetto nel GeomDB (sotto pezzo/layer)
if ( i == 0) {
int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
}
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, vpGObj[i]) ;
vIds.push_back( nId) ;
if ( nId == GDB_ID_NULL)
return false ;
}
// eseguo il salvataggio
bool bOk = pGeomDB->Save( vIds, sFile, nFlag) ;
// rimuovo l'oggetto dal GeomDB
for ( int i = 0 ; i < int( vIds.size()); ++i)
bOk = ( pGeomDB->RemoveGeoObjAndErase( vIds[i]) != nullptr ) && bOk ;
return bOk ;
}
//----------------------------------------------------------------------------
bool
SaveGeoObj( std::vector<std::vector<IGeoObj*>> vvpGObj, std::vector<Color> vCol,
const std::string& sFile, int nFlag = GDB_SV_BIN)
{
// verifico validità oggetti
for ( int i = 0 ; i < int( vvpGObj.size()) ; ++ i) {
for ( int j = 0 ; j < int( vvpGObj[i].size()) ; ++ j) {
if ( vvpGObj[i][j] == nullptr || ! vvpGObj[i][j]->IsValid())
return false ;
}
}
if ( int( vCol.size()) <= int( vvpGObj.size())) {
for ( int i = int( vCol.size()) ; i < int( vvpGObj.size()) ; ++ i)
vCol.push_back( BLACK) ;
}
else
return false ;
// creo GeomDB temporaneo
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
if ( IsNull( pGeomDB))
return false ;
INTVECTOR vIds ;
int nLayId = 0 ;
// creo il part
int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
// per ogni elemento i-esimo, creo un layer
for ( int i = 0 ; i < int( vvpGObj.size()) ; ++i) {
// creo il layer
nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
pGeomDB->SetMaterial( nLayId, vCol[i]) ;
for ( int j = 0 ; j < int( vvpGObj[i].size()) ; ++ j ) {
// inserisco gli oggetti corrispondenti
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, vvpGObj[i][j]) ;
vIds.push_back( nId) ;
if ( nId == GDB_ID_NULL)
return false ;
}
}
// eseguo il salvataggio
bool bOk = pGeomDB->Save( vIds, sFile, nFlag) ;
// rimuovo l'oggetto dal GeomDB
for ( int i = 0 ; i < int( vIds.size()) ; ++i)
bOk = ( pGeomDB->RemoveGeoObjAndErase( vIds[i]) != nullptr) && bOk ;
return bOk ;
}
bool SaveSfrBooleans( const ISurfFlatRegion* pSfrA, const ISurfFlatRegion* pSfrB,
const std::string& sFile, int nFlag = GDB_SV_BIN,
Color cColA = Color( 0., .5, .75, .5), Color cColB = Color( 0., .5, 0., .5))
{
// verifico validità superfici
if ( pSfrA == nullptr || ! pSfrA->IsValid() ||
pSfrB == nullptr || ! pSfrB->IsValid())
return false ;
// creo GeomDB temporaneo
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
if ( IsNull( pGeomDB))
return false ;
// inserisco le superfici nel GeomDB (sotto pezzo/layer)
int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
int nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
int nIdSfrA = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, static_cast<IGeoObj*>( CloneSurfFlatRegion( pSfrA))) ;
if ( nIdSfrA == GDB_ID_NULL)
return false ;
pGeomDB->SetMaterial( nIdSfrA, cColA) ;
int nIdSfrB = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, static_cast<IGeoObj*>( CloneSurfFlatRegion( pSfrB))) ;
if ( nIdSfrB == GDB_ID_NULL)
return false ;
pGeomDB->SetMaterial( nIdSfrB, cColB) ;
// vettor di indici aggiunti
INTVECTOR vIds = { nIdSfrA, nIdSfrB} ;
// eseguo il salvataggio
bool bOk = pGeomDB->Save( vIds, sFile, nFlag) ;
// rimuovo l'oggetto dal GeomDB
for ( int i = 0 ; i < int( vIds.size()) ; ++i)
bOk = ( pGeomDB->RemoveGeoObjAndErase( vIds[i]) != nullptr) && bOk ;
return bOk ;
}
//----------------------------------------------------------------------------
bool
SaveGeoObj( std::vector<std::vector<IGeoObj*>> vvpGObj, std::vector<std::vector<Color>> vvCol,
const std::string& sFile, int nFlag = GDB_SV_BIN)
{
// verifico validità oggetti
for ( int i = 0 ; i < int( vvpGObj.size()) ; ++ i) {
for ( int j = 0 ; j < int( vvpGObj[i].size()) ; ++ j) {
if ( vvpGObj[i][j] == nullptr || ! vvpGObj[i][j]->IsValid())
return false ;
}
}
// creo GeomDB temporaneo
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
if ( IsNull( pGeomDB))
return false ;
INTVECTOR vIds ;
// creo il part
int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
// per ogni elemento i-esimo, creo un layer
for ( int i = 0 ; i < int( vvpGObj.size()) ; ++i) {
// creo il layer
int nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
for ( int j = 0 ; j < int( vvpGObj[i].size()) ; ++ j ) {
// inserisco gli oggetti corrispondenti
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, vvpGObj[i][j]) ;
if ( nId == GDB_ID_NULL)
return false ;
// setto il colore ( se definito)
if ( i < int( vvCol.size()) && j < int( vvCol[i].size()))
pGeomDB->SetMaterial( nId, vvCol[i][j]) ;
vIds.push_back( nId) ;
}
}
// eseguo il salvataggio
bool bOk = pGeomDB->Save( vIds, sFile, nFlag) ;
// rimuovo l'oggetto dal GeomDB
for ( int i = 0 ; i < int( vIds.size()) ; ++i)
bOk = ( pGeomDB->RemoveGeoObjAndErase( vIds[i]) != nullptr) && bOk ;
return bOk ;
}
//----------------------------------------------------------------------------
bool
SaveGeoObj( std::vector<IGeoObj*> vpGObj, std::vector<Color> vCol,
const std::string& sFile, int nFlag = GDB_SV_BIN)
{
// verifico validità oggetti
if ( int( vpGObj.size()) != int( vCol.size()))
return false ;
// creo GeomDB temporaneo
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
if ( IsNull( pGeomDB))
return false ;
INTVECTOR vIds ;
// creo il part
int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
// creo il layer
int nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
// scorro gli elementi da visualizzare
for ( int i = 0 ; i < int( vpGObj.size()) ; ++ i) {
if ( vpGObj[i] == nullptr || ! vpGObj[i]->IsValid())
continue ;
// inserisco gli oggetti corrispondenti
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, vpGObj[i]) ;
if ( nId == GDB_ID_NULL)
return false ;
// setto il colore
pGeomDB->SetMaterial( nId, vCol[i]) ;
// aggiungo l'Id ottenuto
vIds.push_back( nId) ;
}
// eseguo il salvataggio
bool bOk = pGeomDB->Save( vIds, sFile, nFlag) ;
// rimuovo l'oggetto dal GeomDB
for ( int i = 0 ; i < int( vIds.size()) ; ++i)
bOk = ( pGeomDB->RemoveGeoObjAndErase( vIds[i]) != nullptr) && bOk ;
return bOk ; return bOk ;
} }
+10 -3
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2014 // EgalTech 2013-2023
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkGeomDB.h Data : 03.12.14 Versione : 1.5k1 // File : EGkGeomDB.h Data : 09.07.23 Versione : 2.5g1
// Contenuto : Dichiarazione della interfaccia IGeomDB. // Contenuto : Dichiarazione della interfaccia IGeomDB.
// //
// //
@@ -11,6 +11,8 @@
// 21.05.14 DS Agg. GotoFirst/Next/Last/Prev. // 21.05.14 DS Agg. GotoFirst/Next/Last/Prev.
// 30.05.14 DS Agg. metodi di Shear. // 30.05.14 DS Agg. metodi di Shear.
// 03.12.14 DS Aggiunta gestione riferimento di griglia. // 03.12.14 DS Aggiunta gestione riferimento di griglia.
// 29.01.23 DS Aggiunta GetAllInfo.
// 09.07.23 DS Aggiunte DumpStipple, SetStipple e GetStipple.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -132,7 +134,7 @@ class __declspec( novtable) IGeomDB
virtual bool RevertStatus( int nId) = 0 ; virtual bool RevertStatus( int nId) = 0 ;
virtual bool GetStatus( int nId, int& nStat) const = 0 ; virtual bool GetStatus( int nId, int& nStat) const = 0 ;
virtual bool GetCalcStatus( int nId, int& nStat) const = 0 ; virtual bool GetCalcStatus( int nId, int& nStat) const = 0 ;
virtual bool SetMark( int nId) = 0 ; virtual bool SetMark( int nId, int nMark = GDB_MK_ON) = 0 ;
virtual bool ResetMark( int nId) = 0 ; virtual bool ResetMark( int nId) = 0 ;
virtual bool GetMark( int nId, int& nMark) const = 0 ; virtual bool GetMark( int nId, int& nMark) const = 0 ;
virtual bool GetCalcMark( int nId, int& nMark) const = 0 ; virtual bool GetCalcMark( int nId, int& nMark) const = 0 ;
@@ -176,7 +178,12 @@ class __declspec( novtable) IGeomDB
virtual bool GetInfo( int nId, const std::string& sKey, STRVECTOR& vsInfo) const = 0 ; virtual bool GetInfo( int nId, const std::string& sKey, STRVECTOR& vsInfo) const = 0 ;
virtual bool ExistsInfo( int nId, const std::string& sKey) const = 0 ; virtual bool ExistsInfo( int nId, const std::string& sKey) const = 0 ;
virtual bool RemoveInfo( int nId, const std::string& sKey) = 0 ; virtual bool RemoveInfo( int nId, const std::string& sKey) = 0 ;
virtual bool GetAllInfo( int nId, STRVECTOR& vsInfo) const = 0 ;
virtual bool CopyAllInfoFrom( int nId, int nSouId) = 0 ; virtual bool CopyAllInfoFrom( int nId, int nSouId) = 0 ;
// Stipple (significativo solo per curve)
virtual bool DumpStipple( int nId, std::string& sOut, bool bMM = true, const char* szNewLine = "\n") const = 0 ;
virtual bool SetStipple( int nId, int nFactor, int nPattern) = 0 ;
virtual bool GetStipple( int nId, int& nFactor, int& nPattern) const = 0 ;
// TextureData // TextureData
virtual bool DumpTextureData( int nId, std::string& sOut, bool bMM = true, const char* szNewLine = "\n") const = 0 ; virtual bool DumpTextureData( int nId, std::string& sOut, bool bMM = true, const char* szNewLine = "\n") const = 0 ;
virtual bool SetTextureName( int nId, const std::string& sTxrName) = 0 ; virtual bool SetTextureName( int nId, const std::string& sTxrName) = 0 ;
+76
View File
@@ -0,0 +1,76 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2018
//----------------------------------------------------------------------------
// File : EGkHashGrids1d.h Data : 02.05.21 Versione : 2.4e1
// Contenuto : Dichiarazione della classe HashGrids1d.
//
//
//
// Modifiche : 04.07.15 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "EgtDev/Include/EGkBBox3d.h"
#include "EgtDev/Include/EgtNumCollection.h"
#include <unordered_map>
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
class HashGrids1d
{
public :
EGK_EXPORT HashGrids1d( void) ;
EGK_EXPORT ~HashGrids1d( void) ;
EGK_EXPORT void SetActivationGrid( bool bActivate) ;
EGK_EXPORT bool Add( int nObjId, const BBox3d& box) ;
EGK_EXPORT bool Modify( int nObjId, const BBox3d& box) ;
EGK_EXPORT bool Remove( int nObjId) ;
EGK_EXPORT bool Update( void) ;
EGK_EXPORT bool Find( const BBox3d& b3Test, INTVECTOR& vnIds) const ;
EGK_EXPORT void Clear( void) ;
friend class HashGrid1d ;
private :
struct ObjData {
int nId ;
BBox3d box ;
HashGrid1d* pHGrid ;
size_t nHash ;
size_t nCellId ;
ObjData( void)
: nId( -1), box(), pHGrid( nullptr), nHash( 0), nCellId( 0) {}
ObjData( int nI, const BBox3d& bb, HashGrid1d* pHG, size_t nH, size_t nCI)
: nId( nI), box( bb), pHGrid( pHG), nHash( nH), nCellId( nCI) {}
} ;
typedef std::list<ObjData> ObjList ;
typedef std::vector<ObjData*> PtrObjVector ;
typedef std::unordered_map<int,ObjData*> IntPObjUmap ;
typedef std::list<HashGrid1d*> GridList ;
private :
HashGrids1d( const HashGrids1d&) = delete ;
HashGrids1d& operator=( const HashGrids1d&) = delete ;
void addGrid( ObjData& obj) ;
void addList( ObjData& obj) ;
private :
ObjList m_ObjsList ; // Lista degli oggetti
IntPObjUmap m_ObjsMap ; // Map da Id a PtrObj
PtrObjVector m_objsToAdd ; // Vettore di puntatori agli oggetti da inserire
PtrObjVector m_nonGridObjs ; // Vettore di puntatori agli oggetti non assegnati alle griglie (per dimensioni o perchè pochi)
GridList m_GridList ; // Lista delle griglie di dimensione fissa ( in ordine crescente di dimensione di cella)
bool m_bActivate ; // Flag che abilita l'attivazione delle griglie
bool m_bGridActive ; // Flag di attivazione delle griglie
BBox3d m_b3Objs ; // Box totale di tutti gli oggetti inseriti
} ;
+3 -3
View File
@@ -56,11 +56,11 @@ class HashGrids2d
typedef std::list<ObjData> ObjList ; typedef std::list<ObjData> ObjList ;
typedef std::vector<ObjData*> PtrObjVector ; typedef std::vector<ObjData*> PtrObjVector ;
typedef std::unordered_map<int,ObjData*> IntPObjUmap ; typedef std::unordered_map<int,ObjData*> IntPObjUmap ;
typedef std::list<HashGrid2d*> GridList ;
private : private :
typedef std::list<HashGrid2d*> GridList ; // Tipo per lista di hash grid HashGrids2d( const HashGrids2d&) = delete ;
HashGrids2d& operator=( const HashGrids2d&) = delete ;
private :
void addGrid( ObjData& obj) ; void addGrid( ObjData& obj) ;
void addList( ObjData& obj) ; void addList( ObjData& obj) ;
+3 -3
View File
@@ -56,11 +56,11 @@ class HashGrids3d
typedef std::list<ObjData> ObjList ; typedef std::list<ObjData> ObjList ;
typedef std::vector<ObjData*> PtrObjVector ; typedef std::vector<ObjData*> PtrObjVector ;
typedef std::unordered_map<int,ObjData*> IntPObjUmap ; typedef std::unordered_map<int,ObjData*> IntPObjUmap ;
typedef std::list<HashGrid3d*> GridList ;
private : private :
typedef std::list<HashGrid3d*> GridList ; // Tipo per lista di hash grid HashGrids3d( const HashGrids3d&) = delete ;
HashGrids3d& operator=( const HashGrids3d&) = delete ;
private :
void addGrid( ObjData& obj) ; void addGrid( ObjData& obj) ;
void addList( ObjData& obj) ; void addList( ObjData& obj) ;
+109
View File
@@ -0,0 +1,109 @@
//----------------------------------------------------------------------------
// EgalTech 2025
//----------------------------------------------------------------------------
// File : EGkIntersCurvePlane.h Data : 07.11.25 Versione : 2.7k1
// Contenuto : Dichiarazione della classe intersezione curva-piano.
//
//
//
// Modifiche : 07.11.25 DB Creazione modulo.
//
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkPoint3d.h"
#include "/EgtDev/Include/EGkCurve.h"
#include "/EgtDev/Include/EGkIntersCurves.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
// Tipo di intersezione
// nulla
// puntiforme
// sovrapposizione
// Costanti per tipo di approccio/allontanamento dall'intersezione
const int ICPT_NULL = 0 ; //!< Approccio/allontanamento non definito
const int ICPT_IN = 1 ; //!< Approccio/allontanamento interno
const int ICPT_OUT = 2 ; //!< Approccio/allontanamento esterno
const int ICPT_ON = 3 ; //!< Approccio/allontanamento sovrapposto
//! dati di intersezione tra una curva e un piano
struct IntCrvPlnInfo {
bool bOverlap ; //!< intersezione con overlap
IntCrvInfo Ici[2] ; //!< Ici[0] intersez. isolata o inizio overlap, Ici[1] fine overlap
// costruttore
IntCrvPlnInfo( void)
: bOverlap( false) {}
} ;
//! vettore di IntCrvPlnInfo
typedef std::vector<IntCrvPlnInfo> ICPIVECTOR ;
//-----------------------------------------------------------------------------
//! Classificazione di parti di curva rispetto ad un piano
struct CrvPlaneClass {
double dParS ;
double dParE ;
int nClass ;
// costruttori
CrvPlaneClass( void)
: dParS( 0), dParE( 0), nClass( 0) {}
CrvPlaneClass( double dPS, double dPE, int nC)
: dParS( dPS), dParE( dPE), nClass( nC) {}
} ;
//! Vettore di CrvPlaneClass
typedef std::vector<CrvPlaneClass> CRVPLNCVECTOR ;
//-----------------------------------------------------------------------------
// Costanti per classe parti di curva rispetto ad un piano
const int CRVPLN_NULL = 0 ; //!< Parte di curva non classificabile
const int CRVPLN_IN = 1 ; //!< Parte di curva interna ( dal lato negativo della normale)
const int CRVPLN_OUT = 2 ; //!< Parte di curva esterna ( dal lato positivo della normale)
const int CRVPLN_ON = 3 ; //!< Parte di curva sovrapposta al piano
//-----------------------------------------------------------------------------
//! Classe per calcolo intersezione tra una curve e un piano, nel riferimento locale del piano
class IntersCurvePlane
{
public :
//! Le intersezioni sono calcolate nel piano XY locale.<br>
EGK_EXPORT IntersCurvePlane( const ICurve& CurveA, const Point3d& ptOrig, const Vector3d& vtN) ;
public :
//! Indica la presenza di intersezioni con sovrapposizioni
EGK_EXPORT bool GetOverlaps( void) ;
//! Restituisce il numero di intersezioni (intersezioni doppie coincidenti e sovrapposte contano uno)
EGK_EXPORT int GetIntersCount( void) ;
//! Restituisce informazioni sull'intersezione di indice nInd ( 0 based)
EGK_EXPORT bool GetIntCrvPlnInfo( int nInd, IntCrvPlnInfo& aInfo) ;
//! Restituisce il punto di intersezione più vicino al punto passato
EGK_EXPORT bool GetIntersPointNearTo( const Point3d& ptNear, Point3d& ptI, double& dParam) ;
//! Restituisce la classificazione di una curva rispetto al piano
EGK_EXPORT bool GetCurveClassification( double dLenMin, CRVPLNCVECTOR& ccClass) ;
private :
IntersCurvePlane( void) ;
bool CalcIntersLinePlane( const Plane3d& plPlane, const ICurve& Curve, int nCrv = 0) ;
bool IsArcToApprox( const ICurve& Curve) ;
bool AdjustIntersParams( bool bAdjCrv) ;
bool CalcCurveClassification( const ICurve* pCurve, const ICPIVECTOR& Info, double dLenMin, CRVPLNCVECTOR& ccClass) ;
bool CalcCurveInOrOut( const ICurve* pCurve, CRVPLNCVECTOR& ccClass) ;
void OrderAndCompleteIntersections() ;
private :
int m_nIntersType ;
int m_nIntersCount ;
ICPIVECTOR m_Info ;
const ICurve* m_pCurve ; // puntatore alla curva
Plane3d m_plPlane ;
} ;
+63
View File
@@ -0,0 +1,63 @@
//----------------------------------------------------------------------------
// EgalTech 2024-2024
//----------------------------------------------------------------------------
// File : EGkIntersCurveSurfTm.h Data : 23.02.24 Versione : 2.6b4
// Contenuto : Dichiarazione della classe intersezione Curva/SurfTriMesh.
//
//
//
// Modifiche : 23.02.24 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurve.h"
#include "/EgtDev/Include/EGkSurfTriMesh.h"
#include "/EgtDev/Include/EGkIntersLineTria.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
//! dati di intersezione curva - superficie trimesh
struct IntCrvStmInfo {
int nILTT ; //!< tipo di intersezione curva-triangolo
double dU ; //!< parametro sulla curva (non distanza)
double dU2 ; //!< secondo parametro sulla curva (non distanza)
int nT ; //!< indice del triangolo della superficie trimesh
double dCosDN ; //!< coseno dell'angolo tra la direzione della curva e la normale del triangolo
Point3d ptI ; //!< punto di intersezione
Point3d ptI2 ; //!< secondo punto di intersezione (termine di tratto sovrapposto)
// costruttori
IntCrvStmInfo( void) : nILTT( ILTT_NO), dU( 0), dU2( 0), nT(0), dCosDN(0), ptI(), ptI2() {}
IntCrvStmInfo( int nIL, double dUU, int nTT, double dCos, const Point3d& ptP)
: nILTT( nIL), dU( dUU), dU2( 0), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2() {}
IntCrvStmInfo( int nIL, double dUU, double dUU2, int nTT, double dCos, const Point3d& ptP, const Point3d& ptP2)
: nILTT( nIL), dU( dUU), dU2( dUU2), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2( ptP2) {}
} ;
//! vettore di IntCrvStmInfo
typedef std::vector<IntCrvStmInfo> ICSIVECTOR ;
//-----------------------------------------------------------------------------
// Costanti tipo intersezione filtrata Curva-Superficie
enum CSiType { CSIT_NONE = 0,
CSIT_OUT_IN = 1,
CSIT_IN_OUT = 2,
CSIT_IN_IN = 3,
CSIT_OUT_OUT = 4,
CSIT_IN_ON = 5,
CSIT_ON_IN = 6,
CSIT_OUT_ON = 7,
CSIT_ON_OUT = 8} ;
//-----------------------------------------------------------------------------
EGK_EXPORT bool IntersCurveSurfTm( const ICurve& Curve, const ISurfTriMesh& Stm, double dLinTol, ICSIVECTOR& vInfo) ;
EGK_EXPORT bool IntersCurveSurfTmExt( const ICurve& Curve, const ISurfTriMesh& Stm, double dLinTol, INTDBLVECTOR& vInters) ;
EGK_EXPORT bool FilterCurveSurfTmInters( const ICurve& Curve, const ICSIVECTOR& vInfo, INTDBLVECTOR& vInters) ;
+7 -3
View File
@@ -44,7 +44,7 @@ struct IntCrvCrvInfo {
IntCrvInfo IciB[2] ; //!< IciB[0] intersez. isolata o inizio overlap, IciB[1] fine overlap IntCrvInfo IciB[2] ; //!< IciB[0] intersez. isolata o inizio overlap, IciB[1] fine overlap
// costruttore // costruttore
IntCrvCrvInfo( void) IntCrvCrvInfo( void)
: bOverlap( false) {} : bOverlap( false), bCBOverEq( false) {}
} ; } ;
//! vettore di IntCrvCrvInfo //! vettore di IntCrvCrvInfo
typedef std::vector<IntCrvCrvInfo> ICCIVECTOR ; typedef std::vector<IntCrvCrvInfo> ICCIVECTOR ;
@@ -115,16 +115,20 @@ class IntersCurveCurve
EGK_EXPORT bool GetOverlaps( void) ; EGK_EXPORT bool GetOverlaps( void) ;
//! Restituisce il numero di intersezioni (intersezioni doppie coincidenti e sovrapposte contano uno) //! Restituisce il numero di intersezioni (intersezioni doppie coincidenti e sovrapposte contano uno)
EGK_EXPORT int GetIntersCount( void) ; EGK_EXPORT int GetIntersCount( void) ;
//! Restituisce il numero di intersezioni in 3D ( filtrando le intersezioni)
EGK_EXPORT int GetInters3DCount( void) ;
//! Restituisce il numero di intersezioni in cui la curva si attraversa //! Restituisce il numero di intersezioni in cui la curva si attraversa
EGK_EXPORT int GetCrossIntersCount( void) ; EGK_EXPORT int GetCrossIntersCount( void) ;
//! Restituisce il numero di intersezioni in cui la curva si attraversa o si sovrappone //! Restituisce il numero di intersezioni in cui la curva si attraversa o si sovrappone
EGK_EXPORT int GetCrossOrOverlapIntersCount( void) ; EGK_EXPORT int GetCrossOrOverlapIntersCount( void) ;
//! Restituisce informazioni sull'intersezione di indice nInd ( 0 based) //! Restituisce informazioni sull'intersezione di indice nInd ( 0 based)
EGK_EXPORT bool GetIntCrvCrvInfo( int nInd, IntCrvCrvInfo& aInfo) ; EGK_EXPORT bool GetIntCrvCrvInfo( int nInd, IntCrvCrvInfo& aInfo) ;
//! Restituisce informazioni sulla i-esima intersezione 3D ( 0 based)
EGK_EXPORT bool GetInt3DCrvCrvInfo( int nInd, IntCrvCrvInfo& aInfo) ;
//! Restituisce il punto di intersezione più vicino al punto passato //! Restituisce il punto di intersezione più vicino al punto passato
EGK_EXPORT bool GetIntersPointNearTo( int nCrv, const Point3d& ptNear, Point3d& ptI) ; EGK_EXPORT bool GetIntersPointNearTo( int nCrv, const Point3d& ptNear, Point3d& ptI) ;
//! Restituisce la classificazione di una curva rispetto all'altra ( nCrv=0 -> CurvaA, nCrv=1 -> CurvaB) //! Restituisce la classificazione di una curva rispetto all'altra ( nCrv=0 -> CurvaA, nCrv=1 -> CurvaB)
EGK_EXPORT bool GetCurveClassification( int nCrv, CRVCVECTOR& ccClass) ; EGK_EXPORT bool GetCurveClassification( int nCrv, double dLenMin, CRVCVECTOR& ccClass) ;
//! Restituisce la classificazione di curve chiuse secondo le regole delle regioni //! Restituisce la classificazione di curve chiuse secondo le regole delle regioni
EGK_EXPORT int GetRegionCurveClassification( void) ; EGK_EXPORT int GetRegionCurveClassification( void) ;
@@ -142,7 +146,7 @@ class IntersCurveCurve
void CrvCompoCrvCompoCalculate( const ICurve& CurveA, const ICurve& CurveB) ; void CrvCompoCrvCompoCalculate( const ICurve& CurveA, const ICurve& CurveB) ;
bool AdjustIntersParams( bool bAdjCrvA, bool bAdjCrvB) ; bool AdjustIntersParams( bool bAdjCrvA, bool bAdjCrvB) ;
bool SwapInfoAB( ICCIVECTOR& Info, int IndCrvOrd) ; bool SwapInfoAB( ICCIVECTOR& Info, int IndCrvOrd) ;
bool CalcCurveClassification( const ICurve* pCurve, const ICCIVECTOR& Info, CRVCVECTOR& ccClass) ; bool CalcCurveClassification( const ICurve* pCurve, const ICCIVECTOR& Info, double dLenMin, CRVCVECTOR& ccClass) ;
bool CalcCurveInOrOut( const ICurve* pCurveA, const ICurve* pCurveB, CRVCVECTOR& ccClass) ; bool CalcCurveInOrOut( const ICurve* pCurveA, const ICurve* pCurveB, CRVCVECTOR& ccClass) ;
bool GetCurveOutClass( const ICurve* pCurve, int& nClass) ; bool GetCurveOutClass( const ICurve* pCurve, int& nClass) ;
+7 -5
View File
@@ -1,8 +1,8 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2020-2020 // EgalTech 2020-2022
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkIntersLineBox.h Data : 07.05.20 Versione : 2.2e1 // File : EGkIntersLineBox.h Data : 08.01.22 Versione : 2.4a3
// Contenuto : Dichiarazione della classe intersezione linea/box. // Contenuto : Dichiarazione delle funzioni intersezione linea/box.
// //
// //
// //
@@ -32,9 +32,11 @@ EGK_EXPORT bool IntersLineBox( const Point3d& ptL, const Vector3d& vtL, double d
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Tipo di intersezione linea-box // Tipo di intersezione linea-box
enum IntLineBoxType { ILBT_NONE = 0, // non è intersezione enum IntLineBoxType { ILBT_NONE = 0, // non è intersezione
ILBT_IN = 1, // ingresso nel box ILBT_IN = 1, // ingresso nel box
ILBT_OUT = 2, // uscita dal box ILBT_OUT = 2, // uscita dal box
ILBT_TG_INI = 3, // ingresso tangente in una faccia del box ILBT_TG_INI = 3, // ingresso tangente in una faccia del box
ILBT_TG_FIN = 4, // uscita tangente da una faccia del box ILBT_TG_FIN = 4, // uscita tangente da una faccia del box
ILBT_TOUCH = 5} ; // contatto su uno spigolo o su un vertice del box ILBT_TOUCH = 5, // contatto su uno spigolo o su un vertice del box
ILBT_INSIDE = 6, // contenimento nel box
ILBT_TG_INSIDE = 7} ; // contenimento su faccia del box
+89
View File
@@ -0,0 +1,89 @@
//----------------------------------------------------------------------------
// EgalTech 2024
//----------------------------------------------------------------------------
// File : EGkIntersLineSurfBez.h Data : 06.02.24 Versione : 2.6b1
// Contenuto : Dichiarazione della classe intersezione Linea/SurfTriMesh.
//
//
//
// Modifiche : 06.02.24 DB Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkSurfTriMesh.h"
#include "/EgtDev/Include/EGkIntersLineTria.h"
#include "/EgtDev/Include/EGkHashGrids2d.h"
#include "/EgtDev/Include/EGkSurfBezier.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
// Costanti tipo intersezione Linea SurfTriMesh dopo filtraggio
enum LSBiType { LSBT_NONE = 0,
LSBT_IN = 1,
LSBT_OUT = 2,
LSBT_TG_INI = 3,
LSBT_TG_FIN = 4,
LSBT_TOUCH = 5} ;
//-----------------------------------------------------------------------------
// Tipo di intersezione linea-triangolo ausiliario (della trimesh ausilaria)
enum IntLineTriaAuxType { ILTA_NO_TRIA = -1, // l'intersezione è stata calcolata direttamente con la superficie bezier
ILTA_NO = 0, // non c'è intersezione
ILTA_SEGM = 1, // una parte di linea appartiene all'interno del triangolo
ILTA_SEGM_ON_EDGE = 2, // una parte di linea appartiene ad un lato del triangolo
ILTA_VERT = 3, // intersezione coincide con un vertice
ILTA_EDGE = 4, // intersezione coincide con interno di un lato
ILTA_IN = 5} ; // intersezione in interno del triangolo
//-----------------------------------------------------------------------------
//! dati di intersezione linea - superficie bezier
struct IntLinSbzInfo {
int nILSB ; //!< tipo di intersezione linea-bezier
double dU ; //!< parametro sulla linea
double dU2 ; //!< secondo parametro sulla linea
int nT ; //!< indice del triangolo della superficie trimesh // se -1 vuol dire che l'intersezione stata calcolata direttamente, senza usare la trimesh
double dCosDN ; //!< coseno dell'angolo tra la direzione della linea e la normale del triangolo
Point3d ptI ; //!< punto di intersezione
Point3d ptI2 ; //!< secondo punto di intersezione (termine di tratto sovrapposto)
Point3d ptUV ; //!< coordinate del punto nello spazio parametrico
Point3d ptUV2 ; //!< coordinate del secondo punto nello spazio parametrico
// costruttori
IntLinSbzInfo( void) : nILSB( LSBT_NONE), dU( 0), dU2( 0), nT(0), dCosDN(0), ptI(), ptI2(), ptUV(), ptUV2(){}
IntLinSbzInfo( int nILS, double dUU, int nTT, double dCos, const Point3d& ptP, const Point3d ptSP)
: nILSB( nILS), dU( dUU), dU2( 0), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2(), ptUV( ptSP), ptUV2() {}
IntLinSbzInfo( int nILS, double dUU, double dUU2, int nTT, double dCos, const Point3d& ptP, const Point3d& ptP2, const Point3d& ptSP, const Point3d& ptSP2)
: nILSB( nILS), dU( dUU), dU2( dUU2), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2( ptP2), ptUV( ptSP), ptUV2( ptSP2) {}
} ;
//! vettore di IntLinSbzInfo
typedef std::vector<IntLinSbzInfo> ILSBIVECTOR ;
//-----------------------------------------------------------------------------
EGK_EXPORT bool IntersLineSurfBz( const Point3d& ptL, const Vector3d& vtL, double dLen, const ISurfBezier* pSBz,
ILSBIVECTOR& vInfo, bool bFinite = true) ;
//-----------------------------------------------------------------------------
class IntersParLinesSurfBz
{
public :
EGK_EXPORT IntersParLinesSurfBz( const Frame3d& frLines, const ISurfBezier& SBz) ;
EGK_EXPORT bool GetInters( const Point3d& ptL, double dLen, ILSBIVECTOR& vInfo, bool bFinite = true) const ;
private :
bool m_bOk ;
const Frame3d m_frLines ;
const ISurfBezier* m_pSBz ;
HashGrids2d m_HGrids ;
} ;
//-----------------------------------------------------------------------------
EGK_EXPORT bool FilterLineSurfBzInters( const ILSBIVECTOR& vInfo, INTDBLVECTOR& vInters) ;
+29 -11
View File
@@ -29,21 +29,31 @@
//! dati di intersezione linea - superficie trimesh //! dati di intersezione linea - superficie trimesh
struct IntLinStmInfo { struct IntLinStmInfo {
int nILTT ; //!< tipo di intersezione linea-triangolo int nILTT ; //!< tipo di intersezione linea-triangolo
double dU ; //!< parametro sulla linea double dU ; //!< distanza sulla linea
double dU2 ; //!< secondo parametro sulla linea double dU2 ; //!< seconda distanza sulla linea
int nStm ; //!< indice della superficie TriMesh di intersezione
int nT ; //!< indice del triangolo della superficie trimesh int nT ; //!< indice del triangolo della superficie trimesh
double dCosDN ; //!< coseno dell'angolo tra la direzione della linea e la normale del triangolo double dCosDN ; //!< coseno dell'angolo tra la direzione della linea e la normale del triangolo
Point3d ptI ; //!< punto di intersezione Point3d ptI ; //!< punto di intersezione
Point3d ptI2 ; //!< secondo punto di intersezione (termine di tratto sovrapposto) Point3d ptI2 ; //!< secondo punto di intersezione (termine di tratto sovrapposto)
// costruttori // costruttori
IntLinStmInfo( void) : nILTT( ILTT_NO), dU( 0), dU2( 0), nT(0), dCosDN(0), ptI(), ptI2() {} IntLinStmInfo( void) : nILTT( ILTT_NO), dU( 0), dU2( 0), nStm( 0), nT( 0), dCosDN( 0), ptI(), ptI2() {}
IntLinStmInfo( int nIL, double dUU, int nTT, double dCos, const Point3d& ptP) IntLinStmInfo( int nIL, double dUU, int nSurfTm, int nTT, double dCos, const Point3d& ptP)
: nILTT( nIL), dU( dUU), dU2( 0), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2() {} : nILTT( nIL), dU( dUU), dU2( 0), nStm( nSurfTm), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2() {}
IntLinStmInfo( int nIL, double dUU, double dUU2, int nTT, double dCos, const Point3d& ptP, const Point3d& ptP2) IntLinStmInfo( int nIL, double dUU, double dUU2, int nSurfTm, int nTT, double dCos, const Point3d& ptP, const Point3d& ptP2)
: nILTT( nIL), dU( dUU), dU2( dUU2), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2( ptP2) {} : nILTT( nIL), dU( dUU), dU2( dUU2), nStm( nSurfTm), nT( nTT), dCosDN( dCos), ptI( ptP), ptI2( ptP2) {}
} ; } ;
//! vettore di IntLinStmInfo //! vettore di IntLinStmInfo
typedef std::vector<IntLinStmInfo> ILSIVECTOR ; typedef std::vector<IntLinStmInfo> ILSIVECTOR ;
//-----------------------------------------------------------------------------
// Costanti tipo intersezione Linea SurfTriMesh dopo filtraggio
enum LSiType { LST_NONE = 0,
LST_IN = 1,
LST_OUT = 2,
LST_TG_INI = 3,
LST_TG_FIN = 4,
LST_TOUCH = 5} ;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
EGK_EXPORT bool IntersLineSurfTm( const Point3d& ptL, const Vector3d& vtL, double dLen, const ISurfTriMesh& Stm, EGK_EXPORT bool IntersLineSurfTm( const Point3d& ptL, const Vector3d& vtL, double dLen, const ISurfTriMesh& Stm,
@@ -54,11 +64,19 @@ class IntersParLinesSurfTm
{ {
public : public :
EGK_EXPORT IntersParLinesSurfTm( const Frame3d& frLines, const ISurfTriMesh& Stm) ; EGK_EXPORT IntersParLinesSurfTm( const Frame3d& frLines, const ISurfTriMesh& Stm) ;
EGK_EXPORT IntersParLinesSurfTm( const Frame3d& frLines, const CISURFTMPVECTOR& vStm) ;
EGK_EXPORT bool GetInters( const Point3d& ptL, double dLen, ILSIVECTOR& vInfo, bool bFinite = true) const ; EGK_EXPORT bool GetInters( const Point3d& ptL, double dLen, ILSIVECTOR& vInfo, bool bFinite = true) const ;
private :
int GetSurfInd( int nT) const ;
private : private :
bool m_bOk ; bool m_bOk ;
const Frame3d m_frLines ; const Frame3d m_frLines ; // direzione della linea come versore Z
const ISurfTriMesh* m_pSTm ; CISURFTMPVECTOR m_vpSTm ; // vettore delle superfici con cui calcolare le intersezioni con le linee
HashGrids2d m_HGrids ; INTVECTOR m_vBaseInd ; // [0, nTriaStm0, nTriaStm0 + nTriaStm1, nTriaStm0 + nTriaStm1 + nTriaStm2, ...]
HashGrids2d m_HGrids ; // HasGrid di ottimizzazione per ricerca triangoli
} ; } ;
//-----------------------------------------------------------------------------
EGK_EXPORT bool FilterLineSurfTmInters( const ILSIVECTOR& vInfo, INTDBLVECTOR& vInters) ;
+6 -6
View File
@@ -23,12 +23,6 @@
#define EGK_EXPORT __declspec( dllimport) #define EGK_EXPORT __declspec( dllimport)
#endif #endif
//-----------------------------------------------------------------------------
EGK_EXPORT int IntersLineTria( const Point3d& ptL1, const Point3d& ptL2, const Triangle3d& trTria,
Point3d& ptInt, Point3d& ptInt2, bool bFinite = true) ;
EGK_EXPORT int IntersLineTria( const Point3d& ptL, const Vector3d& vtL, double dLen, const Triangle3d& trTria,
Point3d& ptInt, Point3d& ptInt2, bool bFinite = true) ;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Tipo di intersezione linea-triangolo // Tipo di intersezione linea-triangolo
enum IntLineTriaType { ILTT_NO = 0, // non c'è intersezione enum IntLineTriaType { ILTT_NO = 0, // non c'è intersezione
@@ -37,3 +31,9 @@ enum IntLineTriaType { ILTT_NO = 0, // non c'
ILTT_VERT = 3, // intersezione coincide con un vertice ILTT_VERT = 3, // intersezione coincide con un vertice
ILTT_EDGE = 4, // intersezione coincide con interno di un lato ILTT_EDGE = 4, // intersezione coincide con interno di un lato
ILTT_IN = 5} ; // intersezione in interno del triangolo ILTT_IN = 5} ; // intersezione in interno del triangolo
//-----------------------------------------------------------------------------
EGK_EXPORT int IntersLineTria( const Point3d& ptL1, const Point3d& ptL2, const Triangle3d& trTria,
Point3d& ptInt, Point3d& ptInt2, bool bFinite = true) ;
EGK_EXPORT int IntersLineTria( const Point3d& ptL, const Vector3d& vtL, double dLen, const Triangle3d& trTria,
Point3d& ptInt, Point3d& ptInt2, bool bFinite = true) ;
+62
View File
@@ -0,0 +1,62 @@
//----------------------------------------------------------------------------
// EgalTech 2024-2024
//----------------------------------------------------------------------------
// File : EGkIntersLineVolZmap.h Data : 22.02.24 Versione : 2.6b4
// Contenuto : Dichiarazione prototipi intersezione Linea/VolZmap.
//
//
//
// Modifiche : 22.02.24 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkVolZmap.h"
#include "/EgtDev/Include/EGkIntersLineTria.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
// dati di intersezione linea - volume Zmap
struct IntLineZmapInfo {
int nILTT ; // Tipo di intersezione linea-triangolo
double dU ; // Distanza sulla linea
double dU2 ; // Seconda distanza sulla linea
int nVox ; // Indice del voxel del triangolo
int nBlock ; // Indice del blocco del triangolo
Triangle3d trTria ; // Triangolo
double dCosDN ; // Coseno dell'angolo tra la direzione della linea e la normale del triangolo
Point3d ptI ; // Punto di intersezione
Point3d ptI2 ; // Secondo punto di intersezione (termine di tratto sovrapposto)
// Costruttori
IntLineZmapInfo( void)
: nILTT( ILTT_NO), dU( 0), dU2( 0), nVox( -1), nBlock( -1), trTria(), dCosDN( 0), ptI(), ptI2() {}
IntLineZmapInfo( int nIL, double dUU, int nVx, int nBl, Triangle3d& trTr, double dCos, const Point3d& ptP)
: nILTT( nIL), dU( dUU), dU2( 0), nVox( nVx), nBlock( nBl), dCosDN( dCos), trTria( trTr), ptI( ptP), ptI2() {}
IntLineZmapInfo( int nIL, double dUU, double dUU2, int nVx, int nBl, Triangle3d& trTr, double dCos,
const Point3d& ptP, const Point3d& ptP2)
: nILTT( nIL), dU( dUU), dU2( dUU2), nVox( nVx), nBlock( nBl), trTria( trTr), dCosDN( dCos), ptI( ptP), ptI2( ptP2) {}
} ;
// Vettore di IntLineZmapInfo
typedef std::vector<IntLineZmapInfo> ILZIVECTOR ;
//-----------------------------------------------------------------------------
// Costanti tipo intersezione Linea VolZmap dopo filtraggio
enum LZiType { LZT_NONE = 0,
LZT_IN = 1,
LZT_OUT = 2,
LZT_TG_INI = 3,
LZT_TG_FIN = 4,
LZT_TOUCH = 5} ;
//-----------------------------------------------------------------------------
EGK_EXPORT bool IntersLineVolZmap( const Point3d& ptL, const Vector3d& vtL, const IVolZmap& Vzm, ILZIVECTOR& vInfo) ;
EGK_EXPORT bool FilterLineVolZmapInters( const ILZIVECTOR& vInfo, INTDBLVECTOR& vInters) ;
+6 -4
View File
@@ -1,18 +1,19 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2020-2020 // EgalTech 2020-2022
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkIntersPlaneBox.h Data : 08.05.20 Versione : 2.2e1 // File : EGkIntersPlaneBox.h Data : 09.01.22 Versione : 2.4a3
// Contenuto : Dichiarazione della classe intersezione piano/box. // Contenuto : Dichiarazione della classe intersezione piano/box.
// //
// //
// //
// Modifiche : 08.05.20 DS Creazione modulo. // Modifiche : 08.05.20 DS Creazione modulo.
// // 09.01.22 DS Aggiunta TestIntersPlaneBox.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
#pragma once #pragma once
#include "/EgtDev/Include/EGkPlane3d.h"
#include "/EgtDev/Include/EGkBBox3d.h" #include "/EgtDev/Include/EGkBBox3d.h"
#include "/EgtDev/Include/EGkGeoCollection.h" #include "/EgtDev/Include/EGkGeoCollection.h"
@@ -25,5 +26,6 @@
#endif #endif
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
EGK_EXPORT bool IntersPlaneBox( const Point3d& ptOn, const Vector3d& vtN, const BBox3d& b3Box, EGK_EXPORT bool TestIntersPlaneBox( const Plane3d& plPlane, const BBox3d& b3Box) ;
EGK_EXPORT bool IntersPlaneBox( const Plane3d& plPlane, const BBox3d& b3Box,
PNTVECTOR& vPnt, BIPNTVECTOR& vBpt, TRIA3DVECTOR& vTria) ; PNTVECTOR& vPnt, BIPNTVECTOR& vBpt, TRIA3DVECTOR& vTria) ;
+16
View File
@@ -14,6 +14,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EGkSurfTriMesh.h" #include "/EgtDev/Include/EGkSurfTriMesh.h"
#include "/EgtDev/Include/EGkHashGrids1d.h"
//----------------------- Macro per import/export ---------------------------- //----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT #undef EGK_EXPORT
@@ -26,3 +27,18 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
EGK_EXPORT bool IntersPlaneSurfTm( const Plane3d& plPlane, const ISurfTriMesh& Stm, EGK_EXPORT bool IntersPlaneSurfTm( const Plane3d& plPlane, const ISurfTriMesh& Stm,
PNTVECTOR& vPnt, BIPNTVECTOR& vBpt, TRIA3DVECTOR& vTria) ; PNTVECTOR& vPnt, BIPNTVECTOR& vBpt, TRIA3DVECTOR& vTria) ;
//-----------------------------------------------------------------------------
class IntersParPlanesSurfTm
{
public :
EGK_EXPORT IntersParPlanesSurfTm( const Frame3d& frPlanes, const ISurfTriMesh& Stm) ;
EGK_EXPORT bool GetInters( double dDist, PNTVECTOR& vPnt, BIPNTVECTOR& vBpt, TRIA3DVECTOR& vTria) const ;
private :
bool m_bOk ;
const Frame3d m_frPlanes ;
const ISurfTriMesh* m_pSTm ;
HashGrids1d m_HGrids ;
} ;
+27
View File
@@ -0,0 +1,27 @@
//----------------------------------------------------------------------------
// EgalTech 2024-2024
//----------------------------------------------------------------------------
// File : EGkIntersPlaneVolZmap.h Data : 22.02.24 Versione : 2.6b4
// Contenuto : Dichiarazione prototipi intersezione Piano/VolZmap.
//
//
//
// Modifiche : 22.02.24 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkVolZmap.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
EGK_EXPORT bool IntersPlaneVolZmap( const Plane3d& plPlane, const IVolZmap& Vzm, ICURVEPOVECTOR& vpLoop) ;
+13 -12
View File
@@ -32,16 +32,17 @@ EGK_EXPORT int IntersTriaTria( const Triangle3d& trTria1, const Triangle3d& trTr
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Tipo di intersezione triangolo-triangolo // Tipo di intersezione triangolo-triangolo
enum IntTriaTriaType { ITTT_NO = 0, // non c'è intersezione enum IntTriaTriaType { ITTT_NO = 0, // non c'è intersezione
ITTT_OVERLAPS = 1, // i triangoli si sovrappongono (i triangoli del poligono sono in vTria) ITTT_OVERLAPS = 1, // i triangoli si sovrappongono (i triangoli del poligono sono in vTria)
ITTT_VERT_VERT = 2, // intersezione coppia di vertici ITTT_VERT_VERT = 2, // intersezione coppia di vertici
ITTT_VERT_EDGE = 3, // vertice del primo su lato del secondo ITTT_VERT_EDGE = 3, // vertice del primo su lato del secondo
ITTT_EDGE_VERT = 4, // vertice del secondo su lato del primo ITTT_EDGE_VERT = 4, // vertice del secondo su lato del primo
ITTT_VERT_INT = 5, // vertice del primo nell'interno del secondo ITTT_VERT_INT = 5, // vertice del primo nell'interno del secondo
ITTT_INT_VERT = 6, // vertice del secondo nell'interno del primo ITTT_INT_VERT = 6, // vertice del secondo nell'interno del primo
ITTT_EDGE_EDGE_PNT = 7, // punto sull'intersezione di due lati ITTT_EDGE_EDGE_PNT = 7, // punto sull'intersezione di due lati
ITTT_EDGE_EDGE_SEG = 8, // sovrapposizione di lati ITTT_EDGE_EDGE_SEG = 8, // sovrapposizione di lati
ITTT_EDGE_INT = 9, // lato del primo nell'interno del secondo ITTT_EDGE_INT = 9, // lato del primo nell'interno del secondo
ITTT_INT_EDGE = 10, // lato del secondo nell'interno del primo ITTT_INT_EDGE = 10, // lato del secondo nell'interno del primo
ITTT_INT_INT_SEG = 11, // segmento all'interno di entrambi i triangoli ITTT_INT_INT_SEG = 11, // segmento all'interno di entrambi i triangoli
ITTT_COUNTER_OVERLAPS = 12 // triangoli sovrapposti controversi (i triangoli del poligono sono in vTria)
} ; } ;
+90 -6
View File
@@ -1,13 +1,14 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2015-2015 // EgalTech 2015-2024
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkLuaAux.h Data : 21.03.15 Versione : 1.6c6 // File : EGkLuaAux.h Data : 08.05.24 Versione : 2.6e2
// Contenuto : Funzioni per gestione parametri geometrici con LUA. // Contenuto : Funzioni per gestione parametri geometrici con LUA.
// //
// //
// //
// Modifiche : 21.03.15 DS Creazione modulo. // Modifiche : 21.03.15 DS Creazione modulo.
// // 14.04.24 DS Aggiunta gestione Quaternion.
// 08.05.24 DS Aggiunta LuaSetParam per VCT3DVECTOR.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -17,20 +18,25 @@
#include "/EgtDev/Include/EGkPoint3d.h" #include "/EgtDev/Include/EGkPoint3d.h"
#include "/EgtDev/Include/EGkFrame3d.h" #include "/EgtDev/Include/EGkFrame3d.h"
#include "/EgtDev/Include/EGkBBox3d.h" #include "/EgtDev/Include/EGkBBox3d.h"
#include "/EgtDev/Include/EGkQuaternion.h"
#include "/EgtDev/Include/EGkColor.h" #include "/EgtDev/Include/EGkColor.h"
#include "/EgtDev/Include/EGkGeoCollection.h" #include "/EgtDev/Include/EGkGeoCollection.h"
#include "/EgtDev/Include/EGkSelection.h" #include "/EgtDev/Include/EGkSelection.h"
#include "/EgtDev/Include/EgnLuaAux.h" #include "/EgtDev/Include/EGnLuaAux.h"
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline bool inline bool
LuaGetParam( lua_State* L, int nInd, Vector3d& vtPar) LuaGetParam( lua_State* L, int nInd, Vector3d& vtPar)
{ return LuaGetParam( L, nInd, vtPar.v) ; } {
return LuaGetParam( L, nInd, vtPar.v) ;
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline bool inline bool
LuaGetParam( lua_State* L, int nInd, Point3d& ptPar) LuaGetParam( lua_State* L, int nInd, Point3d& ptPar)
{ return LuaGetParam( L, nInd, ptPar.v) ; } {
return LuaGetParam( L, nInd, ptPar.v) ;
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline bool inline bool
@@ -114,6 +120,13 @@ LuaGetParam( lua_State* L, int nInd, BBox3d& b3Par)
return true ; return true ;
} }
//----------------------------------------------------------------------------
inline bool
LuaGetParam( lua_State* L, int nInd, Quaternion& qtPar)
{
return LuaGetParam( L, nInd, qtPar.v) ;
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline bool inline bool
LuaGetParam( lua_State* L, int nInd, Color& colPar) LuaGetParam( lua_State* L, int nInd, Color& colPar)
@@ -264,6 +277,60 @@ LuaSetParam( lua_State* L, const Vector3d& vtPar)
return true ; return true ;
} }
//-------------------------------------------------------------------------------
inline bool
LuaSetParam( lua_State* L, const PNTVECTOR& vPar)
{
try {
// recupero dimensione vettore
int nDim = int( vPar.size()) ;
// creo tavola principale
lua_createtable( L, nDim, 0) ;
// creo e inserisco tavola per ogni componente
for ( int i = 1 ; i <= nDim ; ++ i) {
// creo tavola componente
lua_createtable( L, 3, 0) ;
for ( int j = 1 ; j <= 3 ; ++ j) {
lua_pushnumber( L, vPar[i-1].v[j-1]) ;
lua_rawseti( L, -2, j) ;
}
// la metto nel vettore
lua_rawseti( L, -2, i) ;
}
}
catch( ...) {
return false ;
}
return true ;
}
//-------------------------------------------------------------------------------
inline bool
LuaSetParam( lua_State* L, const VCT3DVECTOR& vPar)
{
try {
// recupero dimensione vettore
int nDim = int( vPar.size()) ;
// creo tavola principale
lua_createtable( L, nDim, 0) ;
// creo e inserisco tavola per ogni componente
for ( int i = 1 ; i <= nDim ; ++ i) {
// creo tavola componente
lua_createtable( L, 3, 0) ;
for ( int j = 1 ; j <= 3 ; ++ j) {
lua_pushnumber( L, vPar[i-1].v[j-1]) ;
lua_rawseti( L, -2, j) ;
}
// la metto nel vettore
lua_rawseti( L, -2, i) ;
}
}
catch( ...) {
return false ;
}
return true ;
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline bool inline bool
LuaSetParam( lua_State* L, const Point3d& ptPar) LuaSetParam( lua_State* L, const Point3d& ptPar)
@@ -369,6 +436,23 @@ LuaSetParam( lua_State* L, const BBox3d& b3Par)
return true ; return true ;
} }
//----------------------------------------------------------------------------
inline bool
LuaSetParam( lua_State* L, const Quaternion& qtPar)
{
try {
lua_createtable( L, 4, 0) ;
for ( int i = 1 ; i <= 4 ; ++ i) {
lua_pushnumber( L, qtPar.v[i-1]) ;
lua_rawseti( L, -2, i) ;
}
}
catch( ...) {
return false ;
}
return true ;
}
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
inline bool inline bool
LuaSetParam( lua_State* L, const Color& colPar) LuaSetParam( lua_State* L, const Color& colPar)
+27
View File
@@ -0,0 +1,27 @@
//----------------------------------------------------------------------------
// EgalTech 2022-2022
//----------------------------------------------------------------------------
// File : MedialAxis.h Data : 22.08.22 Versione : 2.4h2
// Contenuto : Dichiarazione funzione calcolo MedialAxis principale.
//
//
//
// Modifiche : 22.08.22 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurve.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
EGK_EXPORT bool CurveSimpleMedialAxis( const ICurve* pCrv, PolyLine& PL) ;
+30
View File
@@ -0,0 +1,30 @@
//----------------------------------------------------------------------------
// EgalTech 2025-2025
//----------------------------------------------------------------------------
// File : MultiGeomDB.h Data : 22.12.25 Versione : 2.7l3
// Contenuto : Dichiarazione delle funzioni tra due GeomDB.
//
//
//
// Modifiche : 08.10.25 DB Creazione modulo.
// 22.12.25 DS Aggiunta funzione DuplicateGeomDB.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeomDB.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
EGK_EXPORT int Copy( IGeomDB* pSouGeomDB, int nSouId, IGeomDB* pDestGeomDB, int nDestId, int nRefId, int nSonBeforeAfter = GDB_LAST_SON) ;
EGK_EXPORT int CopyGlob( IGeomDB* pSouGeomDB, int nSouId, IGeomDB* pDestGeomDB, int nDestId, int nRefId, int nSonBeforeAfter = GDB_LAST_SON) ;
EGK_EXPORT bool DuplicateGeomDB( IGeomDB* pSouGeomDB, IGeomDB* pDestGeomDB, bool bSkipTemp = false) ;
+1 -1
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2014-2019 // EgalTech 2014-2019
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EgkObjGraphics.h Data : 08/03/19 Versione : 2.1c1 // File : EGkObjGraphics.h Data : 08/03/19 Versione : 2.1c1
// Contenuto : Dichiarazione della interfaccia IObjGraphics. // Contenuto : Dichiarazione della interfaccia IObjGraphics.
// //
// //
+11 -2
View File
@@ -1,12 +1,13 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2015-2019 // EgalTech 2015-2025
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkOffsetCurve.h Data : 24.06.19 Versione : 2.1f2 // File : EGkOffsetCurve.h Data : 08.04.25 Versione : 2.7d1
// Contenuto : Dichiarazione classe per offset di ICurve. // Contenuto : Dichiarazione classe per offset di ICurve.
// //
// //
// Modifiche : 23.09.15 DS Creazione modulo. // Modifiche : 23.09.15 DS Creazione modulo.
// 24.06.19 DS Agg. GetShorterCurve. // 24.06.19 DS Agg. GetShorterCurve.
// 08.04.25 SP Agg. GetPointOffset.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -26,6 +27,8 @@
class OffsetCurve class OffsetCurve
{ {
public : public :
EGK_EXPORT OffsetCurve(): m_dLinTol( 10 * EPS_SMALL) {} ;
EGK_EXPORT OffsetCurve( double dLinTol) : m_dLinTol( dLinTol) {} ;
EGK_EXPORT ~OffsetCurve( void) ; EGK_EXPORT ~OffsetCurve( void) ;
public : public :
@@ -35,7 +38,13 @@ class OffsetCurve
EGK_EXPORT ICurve* GetCurve( void) ; EGK_EXPORT ICurve* GetCurve( void) ;
EGK_EXPORT ICurve* GetLongerCurve( void) ; EGK_EXPORT ICurve* GetLongerCurve( void) ;
EGK_EXPORT ICurve* GetShorterCurve( void) ; EGK_EXPORT ICurve* GetShorterCurve( void) ;
EGK_EXPORT bool GetPointOffset( Point3d& ptOffs, Vector3d& vtOut) ;
EGK_EXPORT double GetLinTol( void) const { return m_dLinTol ; }
EGK_EXPORT void SetLinTol( double dTol) { m_dLinTol = dTol ; }
private : private :
ICURVEPLIST m_CrvLst ; ICURVEPLIST m_CrvLst ;
Point3d m_ptOffs = P_INVALID ;
Vector3d m_vtOut = V_INVALID ;
double m_dLinTol ;
} ; } ;
+35
View File
@@ -8,6 +8,7 @@
// //
// Modifiche : 08.04.14 DS Creazione modulo. // Modifiche : 08.04.14 DS Creazione modulo.
// 25.02.15 DS Agg. PointInPlane*. // 25.02.15 DS Agg. PointInPlane*.
// 05.09.25 RE Agg. funzioni di confronto tra due piani
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -38,6 +39,16 @@ class Plane3d
m_dDist = ( ptP - ORIG) * m_vtN ; m_dDist = ( ptP - ORIG) * m_vtN ;
return true ; return true ;
} }
bool Set( const Point3d& ptP1, const Point3d& ptP2, const Point3d& ptP3)
{ if ( AreSamePointApprox( ptP1, ptP2) ||
AreSamePointApprox( ptP2, ptP3) ||
AreSamePointApprox( ptP3, ptP1)) {
m_vtN = V_NULL ;
return false ;
}
Vector3d vtN = ( ptP2 - ptP1) ^ ( ptP3 - ptP2) ;
return Set( ptP1, vtN) ;
}
void Reset( void) void Reset( void)
{ m_vtN = V_NULL ; { m_vtN = V_NULL ;
m_dDist = 0 ; m_dDist = 0 ;
@@ -144,3 +155,27 @@ PointInPlaneExact( const Point3d& ptP, const Plane3d& plPlane)
{ {
return ( abs( (( ptP - ORIG) * plPlane.GetVersN()) - plPlane.GetDist()) < EPS_ZERO) ; return ( abs( (( ptP - ORIG) * plPlane.GetVersN()) - plPlane.GetDist()) < EPS_ZERO) ;
} }
//-----------------------------------------------------------------------------
inline bool
AreSamePlaneEpsilon( const Plane3d& plPlaneA, const Plane3d& plPlaneB, double dToler)
{
return ( AreSameVectorEpsilon( plPlaneA.GetVersN(), plPlaneB.GetVersN(), dToler) &&
PointInPlaneEpsilon( plPlaneA.GetPoint(), plPlaneB, dToler)) ;
}
//-----------------------------------------------------------------------------
inline bool
AreSamePlaneApprox( const Plane3d& plPlaneA, const Plane3d& plPlaneB)
{
return ( AreSameVectorApprox( plPlaneA.GetVersN(), plPlaneB.GetVersN()) &&
PointInPlaneApprox( plPlaneA.GetPoint(), plPlaneB)) ;
}
//-----------------------------------------------------------------------------
inline bool
AreSamePlaneExact( const Plane3d& plPlaneA, const Plane3d& plPlaneB)
{
return ( AreSameVectorExact( plPlaneA.GetVersN(), plPlaneB.GetVersN()) &&
PointInPlaneExact( plPlaneA.GetPoint(), plPlaneB)) ;
}
+86 -20
View File
@@ -1,12 +1,13 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2013-2014 // EgalTech 2013-2023
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : EGkPoint3d.h Data : 30.05.14 Versione : 1.5e10 // File : EGkPoint3d.h Data : 23.08.23 Versione : 2.5h2
// Contenuto : Dichiarazione della classe Punto 3d. // Contenuto : Dichiarazione della classe Punto 3d.
// //
// //
// //
// Modifiche : 30.12.12 DS Creazione modulo. // Modifiche : 30.12.12 DS Creazione modulo.
// 23.08.23 DS Aggiunto P_INVALID.
// //
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -42,6 +43,9 @@ class EGK_EXPORT Point3d
void Set( double dX, double dY, double dZ) { x = dX ; y = dY ; z = dZ ;} void Set( double dX, double dY, double dZ) { x = dX ; y = dY ; z = dZ ;}
public : public :
//! Verifica la validità delle coordinate del punto
bool IsValid( void) const
{ return ( std::isfinite( x) && std::isfinite( y) && std::isfinite( z)) ; }
//! Verifica se il punto è quasi l'origine //! Verifica se il punto è quasi l'origine
bool IsSmall( void) const bool IsSmall( void) const
{ return ( ( x * x + y * y + z * z) < SQ_EPS_SMALL) ; } { return ( ( x * x + y * y + z * z) < SQ_EPS_SMALL) ; }
@@ -50,19 +54,19 @@ class EGK_EXPORT Point3d
{ return ( ( x * x + y * y + z * z) < SQ_EPS_ZERO) ; } { return ( ( x * x + y * y + z * z) < SQ_EPS_ZERO) ; }
//! Somma sul posto con un vettore //! Somma sul posto con un vettore
Point3d& operator +=( const Vector3d& vtV) Point3d& operator +=( const Vector3d& vtV)
{ this->x += vtV.x ; this->y += vtV.y ; this->z += vtV.z ; return *this ; } { x += vtV.x ; y += vtV.y ; z += vtV.z ; return *this ; }
//! Sottrazione sul posto con un vettore //! Sottrazione sul posto con un vettore
Point3d& operator -=( const Vector3d& vtV) Point3d& operator -=( const Vector3d& vtV)
{ this->x -= vtV.x ; this->y -= vtV.y ; this->z -= vtV.z ; return *this ; } { x -= vtV.x ; y -= vtV.y ; z -= vtV.z ; return *this ; }
//! Somma sul posto con un altro punto (valida solo se equivalente ad una combinazione baricentrica) //! Somma sul posto con un altro punto (valida solo se equivalente ad una combinazione baricentrica)
Point3d& operator +=( const Point3d& ptP) Point3d& operator +=( const Point3d& ptP)
{ this->x += ptP.x ; this->y += ptP.y ; this->z += ptP.z ; return *this ; } { x += ptP.x ; y += ptP.y ; z += ptP.z ; return *this ; }
//! Moltiplicazione sul posto con un numero //! Moltiplicazione sul posto con un numero
Point3d& operator *=( double dMul) Point3d& operator *=( double dMul)
{ this->x *= dMul ; this->y *= dMul ; this->z *= dMul ; return *this ; } { x *= dMul ; y *= dMul ; z *= dMul ; return *this ; }
//! Divisione sul posto con un numero //! Divisione sul posto con un numero
Point3d& operator /=( double dDiv) Point3d& operator /=( double dDiv)
{ double dMul = 1 / dDiv ; this->x *= dMul ; this->y *= dMul ; this->z *= dMul ; return *this ; } { double dMul = 1 / dDiv ; x *= dMul ; y *= dMul ; z *= dMul ; return *this ; }
//! Traslazione dato il vettore di movimento //! Traslazione dato il vettore di movimento
void Translate( const Vector3d& vtMove) ; void Translate( const Vector3d& vtMove) ;
//! Rotazione attorno ad un asse per un punto, dato l'angolo in gradi //! Rotazione attorno ad un asse per un punto, dato l'angolo in gradi
@@ -96,13 +100,15 @@ class EGK_EXPORT Point3d
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// Punti notevoli // Punti notevoli
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Punto non valido
const Point3d P_INVALID( NAN, NAN, NAN) ;
//! Punto origine //! Punto origine
const Point3d ORIG( 0, 0, 0) ; const Point3d ORIG( 0, 0, 0) ;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Somma di due punti (valida solo se equivalente ad una combinazione baricentrica) //! Somma di due punti (valida solo se equivalente ad una combinazione baricentrica)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline Point3d inline const Point3d
operator+( const Point3d& ptP1, const Point3d& ptP2) operator+( const Point3d& ptP1, const Point3d& ptP2)
{ {
return Point3d( ptP1.x + ptP2.x, ptP1.y + ptP2.y, ptP1.z + ptP2.z) ; return Point3d( ptP1.x + ptP2.x, ptP1.y + ptP2.y, ptP1.z + ptP2.z) ;
@@ -111,16 +117,16 @@ operator+( const Point3d& ptP1, const Point3d& ptP2)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Somma di un punto e un vettore //! Somma di un punto e un vettore
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline Point3d inline const Point3d
operator+( const Point3d& ptP1, const Vector3d& vtV2) operator+( const Point3d& ptP1, const Vector3d& vtV2)
{ {
return Point3d( ptP1.x + vtV2.x, ptP1.y + vtV2.y, ptP1.z + vtV2.z) ; return Point3d( ptP1.x + vtV2.x, ptP1.y + vtV2.y, ptP1.z + vtV2.z) ;
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Opposto di un punto //! Opposto di un punto, genera un vettore
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline Vector3d inline const Vector3d
operator-( const Point3d& ptP) operator-( const Point3d& ptP)
{ {
return Vector3d( - ptP.x, - ptP.y, - ptP.z) ; return Vector3d( - ptP.x, - ptP.y, - ptP.z) ;
@@ -129,7 +135,7 @@ operator-( const Point3d& ptP)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Differenza di due punti, genera un vettore //! Differenza di due punti, genera un vettore
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline Vector3d inline const Vector3d
operator-( const Point3d& ptP1, const Point3d& ptP2) operator-( const Point3d& ptP1, const Point3d& ptP2)
{ {
return Vector3d( ptP1.x - ptP2.x, ptP1.y - ptP2.y, ptP1.z - ptP2.z) ; return Vector3d( ptP1.x - ptP2.x, ptP1.y - ptP2.y, ptP1.z - ptP2.z) ;
@@ -138,7 +144,7 @@ operator-( const Point3d& ptP1, const Point3d& ptP2)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Sottrazione di un punto e un vettore //! Sottrazione di un punto e un vettore
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline Point3d inline const Point3d
operator-( const Point3d& ptP1, const Vector3d& vtV2) operator-( const Point3d& ptP1, const Vector3d& vtV2)
{ {
return Point3d( ptP1.x - vtV2.x, ptP1.y - vtV2.y, ptP1.z - vtV2.z) ; return Point3d( ptP1.x - vtV2.x, ptP1.y - vtV2.y, ptP1.z - vtV2.z) ;
@@ -147,7 +153,7 @@ operator-( const Point3d& ptP1, const Vector3d& vtV2)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Prodotto con uno scalare //! Prodotto con uno scalare
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline Point3d inline const Point3d
operator*( const Point3d& ptP, double dMul) operator*( const Point3d& ptP, double dMul)
{ {
return Point3d( ptP.x * dMul, ptP.y * dMul, ptP.z * dMul) ; return Point3d( ptP.x * dMul, ptP.y * dMul, ptP.z * dMul) ;
@@ -156,7 +162,7 @@ operator*( const Point3d& ptP, double dMul)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Prodotto di uno scalare con un punto //! Prodotto di uno scalare con un punto
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline Point3d inline const Point3d
operator*( double dMul, const Point3d& ptP) operator*( double dMul, const Point3d& ptP)
{ {
return Point3d( ptP.x * dMul, ptP.y * dMul, ptP.z * dMul) ; return Point3d( ptP.x * dMul, ptP.y * dMul, ptP.z * dMul) ;
@@ -165,7 +171,7 @@ operator*( double dMul, const Point3d& ptP)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Divisione per uno scalare //! Divisione per uno scalare
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline Point3d inline const Point3d
operator/( const Point3d& ptP, double dDiv) operator/( const Point3d& ptP, double dDiv)
{ {
double dMul ; double dMul ;
@@ -177,7 +183,7 @@ operator/( const Point3d& ptP, double dDiv)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//! Somma mediata di due punti (baricentrica) //! Somma mediata di due punti (baricentrica)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline Point3d inline const Point3d
Media( const Point3d& ptP1, const Point3d& ptP2, double dCoeff = 0.5) Media( const Point3d& ptP1, const Point3d& ptP2, double dCoeff = 0.5)
{ {
return Point3d( ( 1 - dCoeff) * ptP1.x + dCoeff * ptP2.x, return Point3d( ( 1 - dCoeff) * ptP1.x + dCoeff * ptP2.x,
@@ -317,7 +323,16 @@ DirDist( const Point3d& ptP1, const Point3d& ptP2, Vector3d& vtDir, double& dDis
inline bool inline bool
AreSamePointEpsilon( const Point3d& ptP1, const Point3d& ptP2, double dToler) AreSamePointEpsilon( const Point3d& ptP1, const Point3d& ptP2, double dToler)
{ {
return ( SqDist( ptP1, ptP2) < ( dToler * dToler)) ; double dX = ptP1.x - ptP2.x ;
if ( abs( dX) > dToler)
return false ;
double dY = ptP1.y - ptP2.y ;
if ( abs( dY) > dToler)
return false ;
double dZ = ptP1.z - ptP2.z ;
if ( abs( dZ) > dToler)
return false ;
return ( ( dX * dX + dY * dY + dZ * dZ) < ( dToler * dToler)) ;
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -335,7 +350,16 @@ AreSamePointXYEpsilon( const Point3d& ptP1, const Point3d& ptP2, double dToler)
inline bool inline bool
AreSamePointApprox( const Point3d& ptP1, const Point3d& ptP2) AreSamePointApprox( const Point3d& ptP1, const Point3d& ptP2)
{ {
return ( SqDist( ptP1, ptP2) < SQ_EPS_SMALL) ; double dX = ptP1.x - ptP2.x ;
if ( abs( dX) > EPS_SMALL)
return false ;
double dY = ptP1.y - ptP2.y ;
if ( abs( dY) > EPS_SMALL)
return false ;
double dZ = ptP1.z - ptP2.z ;
if ( abs( dZ) > EPS_SMALL)
return false ;
return ( ( dX * dX + dY * dY + dZ * dZ) < SQ_EPS_SMALL) ;
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -353,7 +377,16 @@ AreSamePointXYApprox( const Point3d& ptP1, const Point3d& ptP2)
inline bool inline bool
AreSamePointExact( const Point3d& ptP1, const Point3d& ptP2) AreSamePointExact( const Point3d& ptP1, const Point3d& ptP2)
{ {
return ( SqDist( ptP1, ptP2) < SQ_EPS_ZERO) ; double dX = ptP1.x - ptP2.x ;
if ( abs( dX) > EPS_ZERO)
return false ;
double dY = ptP1.y - ptP2.y ;
if ( abs( dY) > EPS_ZERO)
return false ;
double dZ = ptP1.z - ptP2.z ;
if ( abs( dZ) > EPS_ZERO)
return false ;
return ( ( dX * dX + dY * dY + dZ * dZ) < SQ_EPS_ZERO) ;
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@@ -364,3 +397,36 @@ AreSamePointXYExact( const Point3d& ptP1, const Point3d& ptP2)
{ {
return ( SqDistXY( ptP1, ptP2) < SQ_EPS_ZERO) ; return ( SqDistXY( ptP1, ptP2) < SQ_EPS_ZERO) ;
} }
//----------------------------------------------------------------------------
//! Restituisce una copia in locale del punto passato
//----------------------------------------------------------------------------
inline const Point3d
GetToLoc( const Point3d& ptP, const Frame3d& frRef)
{
Point3d ptQ = ptP ;
ptQ.ToLoc( frRef) ;
return ptQ ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia in globale del punto passato
//----------------------------------------------------------------------------
inline const Point3d
GetToGlob( const Point3d& ptP, const Frame3d& frRef)
{
Point3d ptQ = ptP ;
ptQ.ToGlob( frRef) ;
return ptQ ;
}
//----------------------------------------------------------------------------
//! Restituisce una copia dal primo al secondo riferimento del punto passato
//----------------------------------------------------------------------------
inline const Point3d
GetLocToLoc( const Point3d& ptP, const Frame3d& frOri, const Frame3d& frDest)
{
Point3d ptQ = ptP ;
ptQ.LocToLoc( frOri, frDest) ;
return ptQ ;
}
+1 -1
View File
@@ -13,7 +13,7 @@
#pragma once #pragma once
#include "/EgtDev/Include/EgkBBox3d.h" #include "/EgtDev/Include/EGkBBox3d.h"
#include "/EgtDev/Include/EgtNumCollection.h" #include "/EgtDev/Include/EgtNumCollection.h"
#include <unordered_map> #include <unordered_map>
+30 -6
View File
@@ -108,27 +108,51 @@ class PolyLine
EGK_EXPORT bool GetMaxDistanceFromLine( const Point3d& ptLine, const Vector3d& vtLine, double dLen, EGK_EXPORT bool GetMaxDistanceFromLine( const Point3d& ptLine, const Vector3d& vtLine, double dLen,
double& dMaxDist, bool bIsSegment = true) const ; double& dMaxDist, bool bIsSegment = true) const ;
EGK_EXPORT bool AdjustForMaxSegmentLen( double dMaxLen) ; EGK_EXPORT bool AdjustForMaxSegmentLen( double dMaxLen) ;
EGK_EXPORT bool RemoveAlignedPoints( double dToler = EPS_SMALL) ; EGK_EXPORT bool RemoveAlignedPoints( double dToler = EPS_SMALL, bool bStartEnd = true) ;
EGK_EXPORT bool ApproxOnSide( const Vector3d& vtN, bool bLeftSide, double dToler = EPS_SMALL) ; EGK_EXPORT bool ApproxOnSide( const Vector3d& vtN, bool bLeftSide, double dToler = EPS_SMALL) ;
EGK_EXPORT bool MakeConvex( const Vector3d& vtN, bool bLeftSide) ; EGK_EXPORT bool MakeConvex( const Vector3d& vtN, bool bLeftSide) ;
EGK_EXPORT bool Invert( bool bInvertU = true) ; EGK_EXPORT bool Invert( bool bInvertU = true) ;
EGK_EXPORT bool Flatten( double dZ = 0) ; EGK_EXPORT bool Flatten( double dZ = 0) ;
EGK_EXPORT bool FlattenInAutoPlane( double dToler = 10 * EPS_SMALL) ;
EGK_EXPORT bool GetConvexHullXY( PNTVECTOR& vConvHull) const ; EGK_EXPORT bool GetConvexHullXY( PNTVECTOR& vConvHull) const ;
EGK_EXPORT bool GetMinAreaRectangleXY( Point3d& ptCen, Vector3d& vtAx, double& dLen, double& dHeight) const ; EGK_EXPORT bool GetMinAreaRectangleXY( Point3d& ptCen, Vector3d& vtAx, double& dLen, double& dHeight) const ;
EGK_EXPORT bool Trim( const Plane3d& plPlane, bool bInVsOut = true) ; EGK_EXPORT bool Trim( const Plane3d& plPlane, bool bInVsOut = true) ;
EGK_EXPORT void SetTempProp( int nProp, int nPropInd = 0)
{ if ( nPropInd >= 0 && nPropInd < 2)
m_nTempProp[nPropInd] = nProp ; }
EGK_EXPORT int GetTempProp( int nPropInd = 0) const
{ return (( nPropInd >= 0 && nPropInd < 2) ? m_nTempProp[nPropInd] : 0) ; }
EGK_EXPORT bool FromPointVector( const PNTVECTOR& vPnt)
{ Clear() ;
for ( int i = 0 ; i < std::ssize( vPnt) ; ++i)
AddUPoint( i, vPnt[i]) ;
return GetPointNbr() > 0 ; }
private : private :
bool MyChangeStart( int nPos) ; bool MyChangeStart( int nPos) ;
bool MyApproxOnSide( const Vector3d& vtN, bool bLeftSide, double dToler = EPS_SMALL) ; bool MyApproxOnSide( const Vector3d& vtN, bool bLeftSide, double dToler = EPS_SMALL) ;
bool MyMakeConvex( const Vector3d& vtN, bool bLeftSide) ; bool MyMakeConvex( const Vector3d& vtN, bool bLeftSide) ;
bool MyRemoveSamePoints( double dToler = EPS_SMALL) ;
private : private :
int m_nRejected ; int m_nRejected ; // numero punti rifiutati perchè coincidenti
PNTULIST m_lUPoints ; int m_nTempProp[2] ; // vettore proprietà temporanee
mutable PNTULIST::const_iterator m_iter ; PNTULIST m_lUPoints ; // lista dei punti
mutable PNTULIST::const_iterator m_iter ; // iteratore corrente
} ; } ;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// Raccolte di PolyLine // Raccolte di PolyLine
typedef std::vector<PolyLine> POLYLINEVECTOR ; // vettore di PolyLine typedef std::vector<PolyLine> POLYLINEVECTOR ; // vettore di PolyLine
typedef std::list<PolyLine> POLYLINELIST ; // lista di PolyLine typedef std::list<PolyLine> POLYLINELIST ; // lista di PolyLine
typedef std::vector<POLYLINEVECTOR> POLYLINEMATRIX ; // matrice di PolyLine
//----------------------------------------------------------------------------
EGK_EXPORT bool DistPointPolyLine( const Point3d& ptP, const PolyLine& plPoly, double& dDist) ;
EGK_EXPORT bool DistPointPolyLine( const Point3d& ptP, const PolyLine& plPoly, double& dDist, double& dMinDistPar) ;
EGK_EXPORT bool IsPointInsidePolyLine( const Point3d& ptP, const PolyLine& plPoly, double dToler) ;
EGK_EXPORT bool GetPointParamOnPolyLine( const Point3d& ptP, const PolyLine& plPoly, double dToler, double& dPar) ;
EGK_EXPORT bool ChangePolyLineStart( PolyLine& plPoly, const Point3d& ptNewStart, double dToler) ;
EGK_EXPORT bool SplitPolyLineAtPoint( const PolyLine& plPoly, const Point3d& ptP, double dToler, PolyLine& plPoly1, PolyLine& plPoly2) ;
EGK_EXPORT bool AssociatePolyLinesMinDistPoints( const PolyLine& PL1, const PolyLine& PL2, PNTIVECTOR& vPnt1, PNTIVECTOR& vPnt2, bool& bCommonInternalPoints) ;
EGK_EXPORT bool MatchPolyLinesAddingPoints( const PolyLine& PL1, const PolyLine& PL2, int nType, PNTIVECTOR& vPnt1, PNTIVECTOR& vPnt2) ;
+3 -3
View File
@@ -1,7 +1,7 @@
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// EgalTech 2015-2020 // EgalTech 2015-2023
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// File : Polygon3d.h Data : 02.10.20 Versione : 2.2j1 // File : EGkPolygon3d.h Data : 17.12.23 Versione : 2.5l3
// Contenuto : Dichiarazione della classe Polygon3d (poligono nello spazio). // Contenuto : Dichiarazione della classe Polygon3d (poligono nello spazio).
// //
// //
@@ -58,7 +58,7 @@ class Polygon3d
EGK_EXPORT bool ToGlob( const Frame3d& frRef) ; EGK_EXPORT bool ToGlob( const Frame3d& frRef) ;
EGK_EXPORT bool ToLoc( const Frame3d& frRef) ; EGK_EXPORT bool ToLoc( const Frame3d& frRef) ;
EGK_EXPORT bool LocToLoc( const Frame3d& frOri, const Frame3d& frDest) ; EGK_EXPORT bool LocToLoc( const Frame3d& frOri, const Frame3d& frDest) ;
EGK_EXPORT bool GetLocalBBox( BBox3d& b3Loc) const ;
EGK_EXPORT bool IsValid( void) const EGK_EXPORT bool IsValid( void) const
{ return ! m_Plane.GetVersN().IsSmall() ; } { return ! m_Plane.GetVersN().IsSmall() ; }
EGK_EXPORT const Plane3d& GetPlane( void) const EGK_EXPORT const Plane3d& GetPlane( void) const
+32
View File
@@ -0,0 +1,32 @@
//----------------------------------------------------------------------------
// EgalTech 2023-2023
//----------------------------------------------------------------------------
// File : EGkPolygonElevation.h Data : 02.10.20 Versione : 2.2j1
// Contenuto : Dichiarazione della classe Polygon3d (poligono nello spazio).
//
//
//
// Modifiche : 30.08.15 DS Creazione modulo.
// 19.06.19 DS Aggiunta GetVertices.
// 23.07.19 DS Aggiunte Offset e Invert.
// 02.10.20 DS A FromPlaneTrimmedWithBox aggiunto parametro dToler.
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkPolygon3d.h"
#include "/EgtDev/Include/EGkSurfTriMesh.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
EGK_EXPORT bool PolygonElevationInBBox( const Polygon3d& pgFacet, const BBox3d& b3Box, bool bAcceptOutFacet, double& dElev) ;
EGK_EXPORT bool PolygonElevationInClosedSurfTm( const Polygon3d& pgFacet, const ISurfTriMesh& CldStm, bool bAcceptOutFacet, double& dElev) ;
+64
View File
@@ -0,0 +1,64 @@
//----------------------------------------------------------------------------
// EgalTech 2023-2026
//----------------------------------------------------------------------------
// File : EGkProjectCurveSurfTm.h Data : 14.04.26 Versione : 3.1d3
// Contenuto : Dichiarazione funzioni proiezione curve su superficie Trimesh.
//
//
//
// Modifiche : 31.08.23 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeoPoint3d.h"
#include "/EgtDev/Include/EGkCurve.h"
#include "/EgtDev/Include/EGkSurf.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
// Definizione di Punto 5assi e sue raccolte
struct Point5ax {
Point3d ptP ;
Vector3d vtDir1 ;
Vector3d vtDir2 ;
Vector3d vtDirU ;
Vector3d vtDirV ;
double dPar ;
int nFlag ;
Point5ax( void) : ptP(), vtDir1(), vtDir2(), vtDirU(), vtDirV(), dPar(), nFlag() {} ;
Point5ax( const Point3d& ptBase, const Vector3d& vtTool, double dU, int nData)
: ptP( ptBase), vtDir1( vtTool), vtDir2(), vtDirU(), vtDirV(), dPar( dU), nFlag( nData) {} ;
Point5ax( const Point3d& ptBase, const Vector3d& vtTool, const Vector3d& vtTool2, double dU, int nData)
: ptP( ptBase), vtDir1( vtTool), vtDir2( vtTool2), vtDirU(), vtDirV(), dPar( dU), nFlag( nData) {} ;
Point5ax( const Point3d& ptBase, const Vector3d& vtTool, const Vector3d& vtTool2,
const Vector3d& vtDU, const Vector3d& vtDV, double dU, int nData)
: ptP( ptBase), vtDir1( vtTool), vtDir2( vtTool2), vtDirU( vtDU), vtDirV( vtDV), dPar( dU), nFlag( nData) {} ;
} ;
typedef std::vector<Point5ax> PNT5AXVECTOR ; // vettore di Punti 5assi
//----------------------------------------------------------------------------
// Proiezione di una curva su una o più superfici a distanza minima
EGK_EXPORT bool ProjectCurveOnSurf( const ICurve& crCrv, const CISURFPVECTOR& vpSurf,
double dLinTol, double dMaxSegmLen, bool bSharpEdges, PNT5AXVECTOR& vPt5ax) ;
// Proiezione di una curva su una o più superfici lungo la direzione data (da o verso)
EGK_EXPORT bool ProjectCurveOnSurf( const ICurve& crCrv, const CISURFPVECTOR& vpSurf, const Vector3d& vtDir,
double dLinTol, double dMaxSegmLen, bool bSharpEdges, bool bFromVsTo, PNT5AXVECTOR& vPt5ax) ;
// Proiezione di una curva su una o più superfici in direzione del punto (da o verso)
EGK_EXPORT bool ProjectCurveOnSurf( const ICurve& crCrv, const CISURFPVECTOR& vpSurf, const IGeoPoint3d& gpRef,
double dLinTol, double dMaxSegmLen, bool bSharpEdges, bool bFromVsTo, PNT5AXVECTOR& vPt5ax) ;
// Proiezione di una curva su una o più superfici in direzione della curva (da o verso)
EGK_EXPORT bool ProjectCurveOnSurf( const ICurve& crCrv, const CISURFPVECTOR& vpSurf, const ICurve& crRef,
double dLinTol, double dMaxSegmLen, bool bSharpEdges, bool bFromVsTo, PNT5AXVECTOR& vPt5ax) ;
// Proiezione di una curva su una o più superfici in direzione della superficie (da o verso)
EGK_EXPORT bool ProjectCurveOnSurf( const ICurve& crCrv, const CISURFPVECTOR& vpSurf, const ISurf& sfRef,
double dLinTol, double dMaxSegmLen, bool bSharpEdges, bool bFromVsTo, PNT5AXVECTOR& vPt5ax) ;
+174
View File
@@ -0,0 +1,174 @@
//----------------------------------------------------------------------------
// EgalTech 2024-2024
//----------------------------------------------------------------------------
// File : EGkQuaternion.h Data : 13.04.243 Versione : 2.6d4
// Contenuto : Dichiarazione della classe Quaternion.
//
//
//
// Modifiche : 31.12.13 DS Creazione modulo.
//
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkFrame3d.h"
//----------------------- Macro per import/export -----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//-----------------------------------------------------------------------------
class EGK_EXPORT Quaternion
{
public :
Quaternion( double dW = 0, double dX = 0, double dY = 0, double dZ = 0) : w( dW), x( dX), y( dY), z( dZ) {}
public :
bool IsValid( void) const
{ return ( std::isfinite( w) && std::isfinite( x) && std::isfinite( y) && std::isfinite( z)) ; }
bool IsSmall( void) const
{ return ( ( w * w + x * x + y * y + z * z) < SQ_EPS_SMALL) ; }
bool IsZero( void) const
{ return ( ( w * w + x * x + y * y + z * z) < SQ_EPS_ZERO) ; }
bool IsUnit( void) const
{ return ( abs( w - 1) < EPS_ZERO && ( x * x + y * y + z * z) < SQ_EPS_ZERO) ; }
double SqLen( void) const
{ return ( w * w + x * x + y * y + z * z) ; }
double Len( void) const ;
bool Normalize( double dEps = EPS_SMALL) ;
bool IsNormalized( void) const
{ return ( abs( 1.0 - ( w * w + x * x + y * y + z * z)) < ( 2 * EPS_ZERO)) ; }
Quaternion& operator +=( const Quaternion& qtQ)
{ w += qtQ.w ; x += qtQ.x ; y += qtQ.y ; z += qtQ.z ; return *this ; }
Quaternion& operator -=( const Quaternion& qtQ)
{ w -= qtQ.w ; x -= qtQ.x ; y -= qtQ.y ; z -= qtQ.z ; return *this ; }
Quaternion& operator *=( double dMul)
{ w *= dMul ; x *= dMul ; y *= dMul ; z *= dMul ; return *this ; }
Quaternion& operator /=( double dDiv)
{ double dMul = 1 / dDiv ; w *= dMul ; x *= dMul ; y *= dMul ; z *= dMul ; return *this ; }
public :
union {
struct {
double w ;
double x ;
double y ;
double z ;
} ;
double v[4] ;
} ;
} ;
//----------------------------------------------------------------------------
// Quaternioni notevoli
//----------------------------------------------------------------------------
// Quaternione non valido
const Quaternion Q_INVALID( NAN, NAN, NAN, NAN) ;
// Quaternione unità
const Quaternion Q_UNIT( 1, 0, 0, 0) ;
// Quaternione nullo
const Quaternion Q_NULL( 0, 0, 0, 0) ;
//----------------------------------------------------------------------------
// Definizione da rotazione definita con asse e angolo e inverso
//----------------------------------------------------------------------------
EGK_EXPORT Quaternion FromAxisAngle( const Vector3d& vtAx, double dAngDeg) ;
EGK_EXPORT bool ToAxisAngle( const Quaternion& qtQ, Vector3d& vtAx, double& dAngDeg) ;
//----------------------------------------------------------------------------
// Definizione da parte rotazione di un sistema di riferimento e inverso
//----------------------------------------------------------------------------
EGK_EXPORT Quaternion FromFrame( const Frame3d& frRef) ;
EGK_EXPORT bool ToFrame( const Quaternion& qtQ, Frame3d& frRef) ;
//----------------------------------------------------------------------------
// Coniugato di un quaternione
//----------------------------------------------------------------------------
inline const Quaternion
Conjugate( const Quaternion& qtQ)
{
return ( Quaternion( qtQ.w, -qtQ.x, -qtQ.y, -qtQ.z)) ;
}
//----------------------------------------------------------------------------
// Opposto di un quaternione
//----------------------------------------------------------------------------
inline const Quaternion
operator-( const Quaternion& qtQ)
{
return ( Quaternion( -qtQ.w, - qtQ.x, - qtQ.y, - qtQ.z)) ;
}
//----------------------------------------------------------------------------
// Somma di due quaternioni
//----------------------------------------------------------------------------
inline const Quaternion
operator+( const Quaternion& qtQ1, const Quaternion& qtQ2)
{
return ( Quaternion( qtQ1.w + qtQ2.w, qtQ1.x + qtQ2.x, qtQ1.y + qtQ2.y, qtQ1.z + qtQ2.z)) ;
}
//----------------------------------------------------------------------------
// Sottrazione di due quaternioni
//----------------------------------------------------------------------------
inline const Quaternion
operator-( const Quaternion& qtQ1, const Quaternion& qtQ2)
{
return ( Quaternion( qtQ1.w - qtQ2.w, qtQ1.x - qtQ2.x, qtQ1.y - qtQ2.y, qtQ1.z - qtQ2.z)) ;
}
//----------------------------------------------------------------------------
// Prodotto di un quaternione con uno scalare
//----------------------------------------------------------------------------
inline const Quaternion
operator*( const Quaternion& qtQ, double dMul)
{
return ( Quaternion( qtQ.w * dMul, qtQ.x * dMul, qtQ.y * dMul, qtQ.z * dMul)) ;
}
//----------------------------------------------------------------------------
// Prodotto di uno scalare con un quaternione
//----------------------------------------------------------------------------
inline const Quaternion
operator*( double dMul, const Quaternion& qtQ)
{
return ( Quaternion( qtQ.w * dMul, qtQ.x * dMul, qtQ.y * dMul, qtQ.z * dMul)) ;
}
//----------------------------------------------------------------------------
// Divisione con uno scalare
//----------------------------------------------------------------------------
inline const Quaternion
operator/( const Quaternion& qtQ, double dDiv)
{
double dMul = 1 / dDiv ;
return ( Quaternion( qtQ.w * dMul, qtQ.x * dMul, qtQ.y * dMul, qtQ.z * dMul)) ;
}
//----------------------------------------------------------------------------
// Prodotto scalare due quaternioni
//----------------------------------------------------------------------------
inline double
Scalar( const Quaternion& qtQ1, const Quaternion& qtQ2)
{
return ( qtQ1.w * qtQ2.w + qtQ1.x * qtQ2.x + qtQ2.y * qtQ2.y + qtQ1.z * qtQ2.z) ;
}
//----------------------------------------------------------------------------
// Prodotto di due quaternioni
//----------------------------------------------------------------------------
inline const Quaternion
operator*( const Quaternion& qtQ1, const Quaternion& qtQ2)
{
return ( Quaternion( qtQ1.w * qtQ2.w - qtQ1.x * qtQ2.x - qtQ1.y * qtQ2.y - qtQ1.z * qtQ2.z,
qtQ1.w * qtQ2.x + qtQ1.x * qtQ2.w + qtQ1.y * qtQ2.z - qtQ1.z * qtQ2.y,
qtQ1.w * qtQ2.y + qtQ1.y * qtQ2.w + qtQ1.z * qtQ2.x - qtQ1.x * qtQ2.z,
qtQ1.w * qtQ2.z + qtQ1.z * qtQ2.w + qtQ1.x * qtQ2.y - qtQ1.y * qtQ2.x)) ;
}

Some files were not shown because too many files have changed in this diff Show More