| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für BricsCAD |
Autor
|
Thema: 3D Daten mit Lisp auslesen (1131 mal gelesen)
|
pgoer Mitglied Konstruktionsingenieur
Beiträge: 30 Registriert: 12.07.2012
|
erstellt am: 27. Jan. 2013 12:04 <-- editieren / zitieren --> Unities abgeben:
Hallo, hat einer Erfahrung damit wie man den Befehl _massprop (Anzeigen von 3D Daten wie Schwerpunkt...) mit Lisp auslesen kann, aber das Protikollfenster, das automatisch erscheint, unterdrücken kann ? MfG pgoer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 30. Jan. 2013 07:20 <-- editieren / zitieren --> Unities abgeben: Nur für pgoer
Unterdrücken geht in diesem Falle der Massenermittlung nicht, aber wenn Du ein (graphscr) direkt hinter deine Massenermittlung hinterherschickst, geht das Fenster blitzschnell wieder zu. (command "_massprop" "_l" "" "_Y" "test")(graphscr) ------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pgoer Mitglied Konstruktionsingenieur
Beiträge: 30 Registriert: 12.07.2012
|
erstellt am: 30. Jan. 2013 08:53 <-- editieren / zitieren --> Unities abgeben:
|
T.Moses Mitglied
Beiträge: 82 Registriert: 16.03.2005 Win10, Core i9-9900k @5.0 GHz, 32 GB Ram, NVidia GT1030
|
erstellt am: 30. Jan. 2013 13:24 <-- editieren / zitieren --> Unities abgeben: Nur für pgoer
Ja, das geht mit COM-basierendem Lisp ... Eine Region kann folgende Daten liefern : Area, Centroid, MomentOfInertia, Normal, Perimeter, PrincipalMoments, ProductOfInertia, PrincipalDirections, RadiiOfGyration Ein 3DSolid liefert folgende Daten : Centroid, MomentOfInertia, PrincipalDirections, PrincipalMoments, ProductOfInertia, RadiiOfGyration, Volume, Position Geht mit (vla-get-<property> (vlax-ename->vla-object <ename> )) braucht ein wenig Übung mit VLA/VLAX Funktionen und/oder stöbern im Netz. Gutes Gelingen ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pgoer Mitglied Konstruktionsingenieur
Beiträge: 30 Registriert: 12.07.2012
|
erstellt am: 30. Jan. 2013 16:40 <-- editieren / zitieren --> Unities abgeben:
Danke T.Moses für diesen Hinweis. Funktioniert fast aber nicht ganz. Wenn ich mit (vlax-get-Volume (vlax-ename->vla-Object (car (entsel))) ein 3D-Modell direkt auslese bekomme ich das Volumen. Wenn ich allerdings mit (vlax-get-PrincipalMoment... ein 3D-Modell auslese #<variant 8197 ...> Was mache ich falsch? MfG pgoer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
T.Moses Mitglied
Beiträge: 82 Registriert: 16.03.2005 Win10, Core i9-9900k @5.0 GHz, 32 GB Ram, NVidia GT1030
|
erstellt am: 31. Jan. 2013 00:00 <-- editieren / zitieren --> Unities abgeben: Nur für pgoer
Die VLA Funktionen geben manchmal einen "nativen" Datenwert zurück, manchmal aber auch "komplexe" Daten ... 2 Möglichkeiten : 1. die Rückgabe als <variant ...> mit (setq result (vlax-variant-value res)) -> ergibt ein SAFEARRAY (setq result (safearray->list result)) -> wandelt das dann in normale Liste (eben den Punkt) -oder- 2. mit (vlax-invoke (vlax-ename->vla-object (car (entsel))) 'PrincipalMoment) gibt direkt den Punkt als Liste ... (vlax-invoke) ist eine nicht-dokumentierte Funktion in AutoLISP, aber natürlich auch in BricsCAD enthalten Wie gesagt, braucht ein bisschen Übung / Erfahrung mit VLA / COM Lisp ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |