| |
| 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, eine Pressemitteilung
|
Autor
|
Thema: nochmal Cogo Punkte (2084 mal gelesen)
|
proyectista Mitglied Technische Zeichnerin
Beiträge: 39 Registriert: 23.02.2008 Xeon E5530 2.4Ghz 4 GB RAM Windos 7 / 64bits Civil 3D 2011
|
erstellt am: 16. Jul. 2008 04:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, hab wiedermal (oder besser gesagt immernoch) das Problem, keine cogo points (C3D 2008) via Lisp erzeugen zu koennen; Ich kann Daten vorhandener Punkte auslesen oder sogar aendern, aber neue Punkte in die Zeichnung einzufuegen bekomm ich einfach nicht hin... Kann mir da jemand helfen? mein Datensatz sieht so aus: (("y" "x" "z" "description")...) ;;; auslesen und aendern klappt bestens: (setq cogopto (vlax-ename->vla-object (CAR (ENTSEL))));;#<VLA-OBJECT IAeccPoint 129c6968> (vlax-get-property cogopto "NUMBER");;;-> 3 (vlax-get-property cogopto "NORTHING");;;-> 36.2532 (vlax-get-property cogopto "EASTING");;;-> 42.401 (vlax-get-property cogopto "FullDescription");;;-> "F" (vlax-get-property cogopto "ELEVATION");;;-> 46.0 (vlax-PUT-property cogopto "ELEVATION" 66.0);;;-> 46.0 (vlax-PUT-property cogopto "LABELSTYLE" "COPY1");;;->nil (vlax-PUT-property cogopto "NORTHING" "60");;;->nil ------------------ Jovi (sin Bon). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 16. Jul. 2008 07:37 <-- editieren / zitieren --> Unities abgeben: Nur für proyectista
|
proyectista Mitglied Technische Zeichnerin
Beiträge: 39 Registriert: 23.02.2008
|
erstellt am: 17. Jul. 2008 01:27 <-- editieren / zitieren --> Unities abgeben:
Moin Dorfy, vielen Dank fuer den Tipp - leider hat das nicht geklappt - das lisp scheint sich nur auf Land Desktop Cogo Points zu beziehen: (Add_CGpoint (list 1.0 5.0 3.0) 1) Land Desktop Cogo application not loaded.nil Im Land 2005 hatte ich das Problem mit DXF-Group-Codes geloest, naemlich so: (defun MkCogoPto (pto3d ptoIns ptoNum desc1 desc2 lay / ) (entmake (list '(0 . "AECC_POINT")'(100 . "AcDbEntity")'(67 . 0)'(410 . "Model") (cons 8 lay)'(100 . "AecDbEntity")'(102 . "{AEC_SUBOBJECT") '(300 . "AeccImpPoint")'(100 . "AecImpObj")'(3 . "")'(100 . "AecImpEnt") '(171 . 0)'(100 . "AecImpGeo")(cons 10 ptoIns) ;;;textIns '(15 1.0 0.0 0.0)'(16 0.0 1.0 0.0)'(210 0.0 0.0 1.0)'(100 . "AeccImpPoint") (cons 90 ptonum) ;;; ptoNum (cons 11 pto3d) ;;;pto verdadero (con z) (cons 302 desc1) ;;;desc 302+203 '(301 . "")'(300 . "")'(280 . 0)(cons 303 desc2)'(304 . "")'(305 . "") (cons 10 PtoIns) ;;;ptoins pto '(285 . 1)'(286 . 0)'(170 . 3)'(141 . 5.0)'(306 . "Standard")'(140 . 0.5)'(282 . 1) '(283 . 1)'(284 . 1)'(171 . 2)'(172 . 1)'(173 . 3)'(287 . 1)'(142 . 0.0)'(288 . 1) '(102 . "AEC_SUBOBJECT}")'(102 . "{AEC_NULLOBJECT}")'(100 . "AecDbGeo")'(100 . "AeccDbPoint") )) );;; end defun vielleicht nicht gerade von der elegantesten Art, aber es erfuellte seinen Zweck und klappte wunderbar. Leider arbeite ich kaum mit den vlax oder vla Funktionen, bis heute trau ich mich da nicht ran - das gute alte Lisp tuts aber leider nimmer in allen faellen. (heute arbeite ich mit dem Civil 2008) Noch jemand mit ner guten Idee? Danke im Voraus! ------------------ Jovi (sin Bon). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 17. Jul. 2008 07:24 <-- editieren / zitieren --> Unities abgeben: Nur für proyectista
Morgen, IMHO liegt es erstmal an der Zeile... Was auch immer da bei civil hin muss... ...da ich keine civil habe, muss ich da auch passen (setq AeccApp (vl-catch-all-apply 'vla-getinterfaceobject (list *acad* "aecc.application");<--- ) ) mfg heiko Edit: versuche mal vla-getinterfaceobject --> "AeccXUiLand.AeccApplication.4.0" oder vla-getinterfaceobject --> "AeccXUiLand.AeccApplication.5.0" [Diese Nachricht wurde von Dorfy am 17. Jul. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 17. Jul. 2008 16:32 <-- editieren / zitieren --> Unities abgeben: Nur für proyectista
Hier mal ein funktionierender und kommentierter Beispielcode zum Erzeugen eines Civil Punktes in Civil 3D 2008, läuft aber auch in anderen Civil Versionen (dann Interfacebezeichnung anpassen) Code: (vl-load-com) (defun ExamplecreateCivilPoint () ; zuletzt getestet mit Autodesk Civil 3D 2008 (connectstring angepasst) ; Udo Hübner - www.CAD-Huebner.de ; am 2.1.2006 bei discussion.autodesk.com gepostet ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq acadObj (vlax-get-acad-object) aeccApp (vla-getinterfaceobject acadObj "AeccXUiLand.AeccApplication.5.0") ; connect to Civil 2008 aeccDoc (vlax-get aeccApp "activedocument") aeccPoints(vlax-get aeccDoc "Points") pnt (vlax-3d-point '(1.0 2.0 3.0)) ; define Point aeccPoint (vla-add aeccPoints pnt) ; create Civil Point ) (vlax-put-property aeccPoint 'name "Hello") ; add a Point descriptionkey )
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
proyectista Mitglied Technische Zeichnerin
Beiträge: 39 Registriert: 23.02.2008
|
erstellt am: 18. Jul. 2008 02:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Dorfy und CAD-Huebner, super, hat gefunkt und einige meiner lisps funktionieren endlich wieder, ganz grosse Klasse! (Der Code ist mir sogar verstaendlich, obgleich mir die vlax und vla Funktionen ein Raetsel sind. Die werden ja nicht einmal in der Hilfe beschrieben, man kann weder Syntax noch genauere Beschreibung finden...) nen schoenen Tag noch! ------------------ Gruss Jovi. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
THE_ONE Mitglied Student, Alter:23
Beiträge: 299 Registriert: 27.04.2005 AMD XP 2000, 512MB-RAM, WIN XP Pro Readon 9600Pro VIZ 2005, Autocad 2007,(Mechanical)
|
erstellt am: 29. Jul. 2008 13:11 <-- editieren / zitieren --> Unities abgeben: Nur für proyectista
|
proyectista Mitglied Technische Zeichnerin
Beiträge: 39 Registriert: 23.02.2008
|
erstellt am: 03. Aug. 2008 02:43 <-- editieren / zitieren --> Unities abgeben:
hallo One, genau. Cogo-punkte wie ich sie nenne, sind eigene Elemente ("AECC_COGO_POINT") und koennen nicht im "normalen" Autocad erzeugt werden - ganz grob gesagt: vom normalen Autocad-punkt unterscheiden sie sich hauptsaechlich darin, dass sie nicht nur die Koordenaten, sondern auch Punktnummer und Deskription speichern koennen.
------------------ Gruss Jovi. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CadNightJo Mitglied Brücken - Konstrukteur
Beiträge: 38 Registriert: 25.06.2008 WIN XP SP 3 Vestra/Civil 2009
|
erstellt am: 15. Mrz. 2009 13:11 <-- editieren / zitieren --> Unities abgeben: Nur für proyectista
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 15. Mrz. 2009 14:07 <-- editieren / zitieren --> Unities abgeben: Nur für proyectista
Die Frage versteh ich jetzt nicht. Drei Beiträge vorher hab ich doch ein fertiges Lisp zur Erzeugung von Civil Punkten (AEC_COGO_POINTS) gepostet für Jovi. Die Lisp-Routine läuft auch unter Civil 3D 2007, sofern man den Initialisierungsstring von Getinterfaceobject von 5.0 auf 4.0 anpasst. Dann nur noch Befehl: (examplecreatecivilpoint) engeben und die Routine erzeugt einen neuen Civil Punkt. ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ifga Mitglied Beratender Ingenieur
Beiträge: 29 Registriert: 05.11.2003
|
erstellt am: 22. Dez. 2009 16:34 <-- editieren / zitieren --> Unities abgeben: Nur für proyectista
Ich habe den Beispielcode zur Erzeugung von Cogo-Punkten noch ergänzt und wollte noch benutzerdefinierte Attribute anhängen, mit der Methode SetUserDefinedProbertyValue, aber mit steigt vlax-invoke-method aus. Habe ich hier den falschen Ansatz gewählt? (setq acadObj (vlax-get-acad-object) aeccApp (connecttocivil) ; connect to Civil aeccDoc (vlax-get aeccApp "activedocument") aeccPoints(vlax-get aeccDoc "Points") pnt (vlax-3d-point 3d) ; define Point aeccPoint (vla-add aeccPoints pnt) ; create Civil Point ) (vlax-put-property aeccPoint 'name name) ; add a Point descriptionkey Name (vlax-put-property aeccPoint 'Layer (strcat "VE-SYMBOL-S" code)) ; add a Point descriptionkey Layer (vlax-put-property aeccPoint 'Description code) ; add a Point descriptionkey Kurzbeschreibung (vlax-put-property aeccPoint 'Descriptionformat "$*") ; add a Point descriptionkey Beschreibungsformat (vlax-put-property aeccPoint 'Style (strcat "S" code)) ; add a Point descriptionkey Punktstil (vlax-put-property aeccPoint 'LabelStyle "NZ") ; add a Point descriptionkey Punktbeschriftungsstil (if (/= att1 nil) (progn (setq methode (vlax-method-applicable-p aeccPoint 'SetUserDefinedPropertyValue)) ; frägt Methode ab (if methode (vlax-invoke-method aeccPoint 'SetUserDefinedPropertyValue (vlax-make-variant schluessel1) (vlax-make-variant "HALLO")) ; add a userdefined Point descriptionkey ) ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |