| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Körper extrudiernen und in Block einfügen (966 mal gelesen)
|
MH Bit Mitglied Angestellter
Beiträge: 20 Registriert: 23.03.2004
|
erstellt am: 21. Apr. 2004 12:25 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte eine Fläche z.B. T-Träger-Querschnitt erstellen. Dieser muss anschließend gedreht werden. Danach möchte ich den Körper exdrudieren. Dieser Köper muß anschließend mit anderen Körpern verschmolzen und beschnitten werden. Diesen neuen Körper möchte ich in einen Block packen um ihm dann noch ein paar Attribute mitgeben, Zahlenwerte die über eine Eingabemaske eingegeben wurden. Ich bekomme den Körper gezeichnet, schafe es aber nicht den Körper in einen Block zu packen. Eine Fläche zu zeichnen, und die dann in einen Bloch zu packen schaff ich auch, sobald ich diese exdrudieren will bekomme ich die Meldung: Konnte gewähltes Objekt nicht extrudieren. Wer kann mir weiterhelfen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 21. Apr. 2004 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für MH Bit
Zitat: Original erstellt von MH Bit: Eine Fläche zu zeichnen, und die dann in einen Bloch zu packen schaff ich auch, sobald ich diese exdrudieren will bekomme ich die Meldung: Konnte gewähltes Objekt nicht extrudieren.
In der Reihenfolge sowieso nicht... Blockreferenzen können nicht extrudiert werden ------------------ - Sebastian Mattis - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MH Bit Mitglied Angestellter
Beiträge: 20 Registriert: 23.03.2004
|
erstellt am: 21. Apr. 2004 12:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Cadffm Das man einen Block nicht exdtrudieren kann ist mir bekannt. Deshalb hab ich es in der Blockdefinition versucht. Ich vermute das der Command Befhel hir nicht hin passt, hab aber keine Idee wie ich es sonst machen könnte. Hier ist der Quelltext: (defun c:test2() (entmake '((0 . "Block")(2 . "Testblock")(70 . 2)(10 0.0 0.0 0.0))) (entmake (append '( (0 . "LWPOLYLINE")) (list(cons 8 "03-Überbau")) (list(cons 100 "AcDbEntity")) (list(cons 410 "Model")) (list(cons 100 "AcDbPolyline")) (list(cons 90 12) (cons 10 (list ubb1-pkt1x ubb1-pkt1y)) (cons 10 (list ubb1-pkt2x ubb1-pkt2y)) (cons 10 (list ubb1-pkt3x ubb1-pkt3y)) (cons 10 (list ubb1-pkt4x ubb1-pkt4y)) (cons 10 (list ubb1-pkt5x ubb1-pkt5y)) (cons 10 (list ubb1-pkt6x ubb1-pkt6y)) (cons 10 (list ubb1-pkt7x ubb1-pkt7y)) (cons 10 (list ubb1-pkt8x ubb1-pkt8y)) (cons 10 (list ubb1-pkt9x ubb1-pkt9y)) (cons 10 (list ubb1-pkt10x ubb1-pkt10y)) (cons 10 (list ubb1-pkt11x ubb1-pkt11y)) (cons 10 (list ubb1-pkt1x ubb1-pkt1y)) ))) (setq ubb1 (cdr(assoc '-1 (entget (entlast))))) (command "_extrude" ubb1 "" "10" ) (entmake '((0 . "ENDBLK"))) (ins-test "Testblock") ) Den ubb* sind natürlich entsprechende Werte zugewiesen Michael (defun ins-test (name) (regapp "xdatamicky") (entmake '((0 . "INSERT")(2 . "Testblock")(10 0.0 0.0 0.0)(-3 ("xdatamicky" (1000 . "dfs"))))) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 21. Apr. 2004 13:02 <-- editieren / zitieren --> Unities abgeben: Nur für MH Bit
zwischen (entmake '((0 . "Block")(2 . "Testblock")(70 . 2)(10 0.0 0.0 0.0))) (entmake '((0 . "ENDBLK"))) kanst du nur mit entmake erstellte objekte in die blockdefintion packen , und nicht welche die mit command erzeugt wurden!! command "extrude" verändert die polylinie nicht, sondern erzeugt daraus ein neues element da hilft nur , mit command "extrude" teil erzeugen, mit (entlast) neu erzeugtes tel holen, und dann daraus block machen ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MH Bit Mitglied Angestellter
Beiträge: 20 Registriert: 23.03.2004
|
erstellt am: 23. Apr. 2004 10:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Fuchsi, Danke für deinen Tip, aber leider klappt das immer noch nicht. Ich hab den code vollgendermassen geändert: (defun c:test2() (entmake (append '( (0 . "LWPOLYLINE")) (list(cons 8 "03-Überbau")) (list(cons 100 "AcDbEntity")) (list(cons 410 "Model")) (list(cons 100 "AcDbPolyline")) (list(cons 90 12); 12 kontrollpunkte (cons 10 (list ubb1-pkt1x ubb1-pkt1y)); kontrollpunkte (cons 10 (list ubb1-pkt2x ubb1-pkt2y)) (cons 10 (list ubb1-pkt3x ubb1-pkt3y)) (cons 10 (list ubb1-pkt4x ubb1-pkt4y)) (cons 10 (list ubb1-pkt5x ubb1-pkt5y)) (cons 10 (list ubb1-pkt6x ubb1-pkt6y)) (cons 10 (list ubb1-pkt7x ubb1-pkt7y)) (cons 10 (list ubb1-pkt8x ubb1-pkt8y)) (cons 10 (list ubb1-pkt9x ubb1-pkt9y)) (cons 10 (list ubb1-pkt10x ubb1-pkt10y)) (cons 10 (list ubb1-pkt11x ubb1-pkt11y)) (cons 10 (list ubb1-pkt1x ubb1-pkt1y)) ))) (setq ubb1 (cdr(assoc '-1 (entget (entlast))))) (command "_extrude" (cdr(assoc '-1 (entget (entlast)))) "" "10" "0") (entmake '((0 . "Block")(2 . "Testblock")(70 . 2)(10 0.0 0.0 0.0))) (entget (entlast)) (entmake '((0 . "ENDBLK"))) (ins-test "Testblock") ) Der Block der so erzeugt wird ist leer. Kannst du mir vileicht die Letzten Zeilen, so ab (entmake '((0 . " Block").. mit dem (entlast) basteln? Ich glaub ich seh dn Wald vor lauter Bäumen nicht mehr. Gruß Michael
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 26. Apr. 2004 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für MH Bit
Hallo Michael, so wie fuchsi es bereits geschrieben hat: Du musst die zu einem Block gehörigen Elemente zwischen dem (entmake "BLOCK") und (entmake "ENDBLOCK") mit (entmake ..) erzeugen. Das fehlt bei dir. Ich würde das Element, welches du mit (command erzeugt hast, als 'Kopiervorlage' nutzen. (entmake ..);Block ;;; (entmake(vl-remove-if '(lambda (X) (member (car X) '(-1 5)) ) (entget (entlast)) )) ;;; (entmake ..);ENDBLK Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |