| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Befehl Massprop bzw. Masseig (1117 mal gelesen)
|
flieger99 Mitglied
Beiträge: 14 Registriert: 18.12.2012
|
erstellt am: 19. Dez. 2012 12:22 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich wäre euch dankbar, wenn ihr mir bei folgendem Problem helfen könntet. Ich würde gern für Volumenkörper mit LISP automatisch die Achse zeichnen lassen. Da mir kein besserer Weg eingefallen ist, würde ich dies indirekt über die "massprop"-Eigenschaft angehen. Leider scheitere ich daran, die "massprop"-Eigenschaft auf einen Volumenkörper anzuwenden und die Ergebnisse dann in eine Datei zu schreiben. Vielen Dank im Voraus für eure Hilfe! Pinto [Diese Nachricht wurde von flieger99 am 19. Dez. 2012 editiert.] [Diese Nachricht wurde von flieger99 am 19. Dez. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 19. Dez. 2012 14:07 <-- editieren / zitieren --> Unities abgeben: Nur für flieger99
Hi, den Befehl MASSPROP brauchst du nicht. Mach mal ein
Code: (vlax-dump-Object (vlax-ename->vla-object (car (entsel))))
auf deinen Volumenkörper. Vielleicht reicht dir schon eine dieser Eigenschaften, die du über vlax-get-property auslesen kannst. Gruß CADchup
------------------ CADmaro.de [Diese Nachricht wurde von CADchup am 19. Dez. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flieger99 Mitglied
Beiträge: 14 Registriert: 18.12.2012
|
erstellt am: 19. Dez. 2012 14:20 <-- editieren / zitieren --> Unities abgeben:
Hallo CADchup, zunächst vielen Dank für Deine Hilfe. Ich habe Deinen Code soeben ausprobiert. Leider gibt mir Autocad die folgende Fehlermeldung aus: Code: Objekt wählen: ; Fehler: no function definition: VLAX-ENAME->VLA-OBJECT
Ich muss allerdings dazu sagen, dass ich ein absoluter Anfänger in Lisp bin und mich erst einarbeiten muss. Ich wäre Dir daher sehr dankbar, wenn Du mir einen Tipp geben könntest, was ich falsch gemacht habe. Ich möchte mit Lisp eine Schleife programmieren, in der ich über alle vorhandenen 3D-Volumenkörper die äußeren Begrenzungen abfrage und jeweils in eine Datei schreibe. Diese einzelnen Dateien möchte ich dann in Excel mit Hilfe von VBA einlesen, um die Achsen für die 3D-Volumenkörper aus den äußeren Begrenzungen zu konstruieren. Vielen Dank im Voraus und frohe Weihnachten! Pinto Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jupa Ehrenmitglied V.I.P. h.c. Ruheständler
Beiträge: 6052 Registriert: 16.09.2004 WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.
|
erstellt am: 19. Dez. 2012 14:36 <-- editieren / zitieren --> Unities abgeben: Nur für flieger99
|
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 19. Dez. 2012 14:39 <-- editieren / zitieren --> Unities abgeben: Nur für flieger99
Ja, (vl-load-com) sollte man vor VLAX-Gedöns eingeben. Aber vergiß das, du willst ja Dateien haben und dann läuft es wahrscheinlich auf etwas wie dieses hier hinaus: Code: (if (setq ss (ssget '((0 . "3DSOLID")))) (command "_massprop" ss "" "_y" "c:/temp/mass.mpr"))
Gruß CADchup ------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flieger99 Mitglied
Beiträge: 14 Registriert: 18.12.2012
|
erstellt am: 19. Dez. 2012 14:48 <-- editieren / zitieren --> Unities abgeben:
Hallo CADchup, herzlichen Dank, ich kann nun die Daten für die 3D-Volumenkörper abfragen! Hast Du eventuell noch eine Idee, wie eine Schleife mit variablem Dateinamen aussehen könnte? Ich würde gern die 3D-Volumenkörper wie folgt abfragen: Code:
DATEINAME=1for i = 1 to n (if (setq ss (ssget '((0 . "3DSOLID")))) (command "_massprop" ss "" "_y" DATEINAME)) DATEINAME=DATEINAME+1 DATEINAME=DATEINAME & ".MPR" next i
Ich hoffe, es ist verständlich, was ich beabsichtige. Leider kann ich wie gesagt noch nicht in Lisp programmieren, sondern beherrsche nur VBA. Es wäre ganz große Klasse, wenn Du für dieses Problem eventuell eine Lösung hättest. Herzlichen Dank! Pinto Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 19. Dez. 2012 15:00 <-- editieren / zitieren --> Unities abgeben: Nur für flieger99
Quick 'n dirty
Code: (defun c:MassFile (/ i ss) (setq i 1) (while (setq ss (ssget '((0 . "3DSOLID")))) (command "_massprop" ss "" "_y" (strcat "c:/temp/Volumen" (itoa i) ".mpr")) (setq i (1+ i)) ) )
Aufruf einfach mit Eingabe von "Massfile" ------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flieger99 Mitglied
Beiträge: 14 Registriert: 18.12.2012
|
erstellt am: 19. Dez. 2012 15:05 <-- editieren / zitieren --> Unities abgeben:
Hallo CADchup, ganz herzlichen Dank für Deine Hilfe! Die Lösung ist fast perfekt. Das einzige, was noch fehlt, wäre eine Schleife über alle vorhandenen Volumenkörper. Mein Problem ist, dass ich in dem Modell ca. 3000 Volumenkörper habe und dann mit Hilfe der Datei "MassFile" jedes einzelne anklicken müsste. Es wäre eine wahnsinnig große Hilfe, wenn Du mir hier noch eine Lösung schicken könntest. Nochmals ganz herzlichen Dank für Deine tolle Hilfe!! Pinto Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 19. Dez. 2012 15:52 <-- editieren / zitieren --> Unities abgeben: Nur für flieger99
Ja, das kann ich mir vorstellen, dass es eine große Hilfe wäre. Weil Weihnachten ist und du mit dem VBA-Gedöns sowieso noch genug zu tun haben wirst...
Code: (defun c:MassFile (/ i ss) (setq i 0) (if (setq ss (ssget "X" '((0 . "3DSOLID")))) (while (setq ent (ssname ss i)) (command "_massprop" ent "" "_y" (strcat "c:/temp/Volumen" (itoa i) ".mpr")) (setq i (1+ i)) ) ) )
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flieger99 Mitglied
Beiträge: 14 Registriert: 18.12.2012
|
erstellt am: 19. Dez. 2012 16:02 <-- editieren / zitieren --> Unities abgeben:
Hallo CADchup, GANZ HERZLICHEN DANK FÜR DEINE HILFE!!!! Das Skript läuft super, und jetzt kann ich mich endlich in mein geliebtes VBA stürzen Ich wünsche Dir tolle Weihnachten und einen guten Rutsch ins neue Jahr!! Viele Grüße, Pinto Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |