| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Koordinaten einzelner CIVIL-Punkte (3197 mal gelesen)
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004
|
erstellt am: 15. Nov. 2007 14:36 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte die Koordinaten von CIVIL-Punkten mit LISP auslesen, und da ich mit CIVIL noch ein wenig auf Kriegsfuß stehe komme ich da noch zu keiner sinnvollen Lösung. Letztendlich möchte ich an den Positionen der CIVIL-Punkte Blöcke einfügen, und zwar die, die auch in dem Punktstil als AutoCAD-Blöcke zugewiesen sind. Zudem muß ich dann noch die Punktnummern und Höhen für die Attributsfüllungen haben. Hier nun mein Versuch:
Code:
(defun C:test (/ aws_point_group vlax-p_gobj punktnrn blockname) (vl-load-com) (if (setq aws_point_group (ssget '((0 . "AECC_POINT_GROUP")))) (setq vlax-p_gobj (vlax-ename->vla-object (ssname aws_point_group 0)) blockname (vlax-get-property (vlax-get-property vlax-p_gobj "PointStyle") "MarkerSymbolName") punktnrn (vlax-safearray->list (vlax-variant-value (vlax-get-property vlax-p_gobj "Points"))))))
Was ich also bis jetzt habe ist der Blockname und die Punktnummern in einer Liste. ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ida-stade Mitglied Bauingenieur
Beiträge: 700 Registriert: 04.03.2006 AEC-Collection 2021, Intel Core i7-7700K, 4,2Ghz, 16 GB RAM, 1 TB SSD, 2 Monitore PhilipsBDM4350(4k, 43Zoll) man braucht ja Platz auf dem Bildschirm...
|
erstellt am: 15. Nov. 2007 18:09 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Hallo Jörn! Von Lisp habe ich leider bisher keine Ahnung. Aber 'mal die Frage: Warum keine Lösung innerhalb von CIVIL? Wenn Du z.B. nur bei einigen Punkten ein Symbol haben willst, könntest Du eine gesonderte Punktgruppe erstellen und die entsprechenden Punkte per Auswahl zuordnen. Auch die Darstellung von Höhen, Koordinaten, Punktnummern usw. läßt sich so steuern. Um die Darstellung zu verbessern, lassen sich die Beschriftungen usw. auch noch drehen, was auch für mehrere Punkte gleichzeitig möglich ist. Falls ich es nicht getroffen haben sollte, stell doch einmal ein Bild ein, wie es aussehen soll. Gruß Dietrich 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 Map/Civil 3D 2005-2025, aktuelle SPs.
|
erstellt am: 15. Nov. 2007 22:30 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Ich hab da mal etwas Code zum Testen für dich erstellt (quick & Dirty, keine lokalen Variablen usw.) Zu beachten ist, dass das Auswahlen von Punkten in 2008 geändert wurde, da lässt sich ein Punktobjekt direkt anwählen, nicht der Umweg über die Punktgruppe.
Code: (vl-load-com) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (DEFUN C:ListCivil2008Points ( ) (prompt "\nCivil Punkte auflisten in Civil 3D 2008 - Demo von www.CAD-Huebner.de") (if (not (setq AeccObj (connecttocivil))) (progn (prompt "\nCivil 3D steht nicht zur Verfügung - Programm abgebrochen!") (exit) ) ) (setq aeccDoc (vlax-get AeccObj "activedocument")) (Prompt "Civil Punkte wählen:") (if (setq ss (ssget (list (cons 0 "AECC_COGO_POINT")))) (progn (setq cnt (sslength ss)) (while (>= (setq cnt (1- cnt)) 0) (setq Ptobj (vlax-ename->vla-object (ssname ss cnt))) (vlax-dump-object PtObj) ) ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (DEFUN C:ListCivil2007Points ( ) (prompt "\nCivil Punkte auflisten in Civil 3D 2007 - Demo von www.CAD-Huebner.de") (if (not (setq AeccObj (connecttocivil))) (progn (prompt "\nCivil 3D steht nicht zur Verfügung - Programm abgebrochen!") (exit) ) ) (setq aeccDoc (vlax-get AeccObj "activedocument")) (Prompt "Alle Civil Punkte auflisten:") (vlax-dump-object (setq aeccPoints (vlax-get-property aeccDoc "Points"))) (vlax-for Point aeccpoints (vlax-dump-object Point) ) (Prompt "Civil Punkte/Punktgruppe wählen:") (if (setq ss (ssget (list (cons 0 "AECC_POINT_GROUP")))) (progn (print (setq cnt (sslength ss))) (while (>= (setq cnt (1- cnt)) 0) (setq PtgroupObj (vlax-ename->vla-object (ssname ss cnt))) (vlax-dump-object vlaPtObj) (setq Pointlist (vlax-get-property PtGroupObj "Points")) ; alle Punkte der gewählten Punktegruppe auflisten (Foreach PointNo (vlax-safearray->list (vlax-variant-value Pointlist)) (vlax-dump-object (vlax-invoke-method aeccPoints "Find" PointNo)) ) ) ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun connecttocivil ( / AECCOBJ aecstring) (setq aecstring (cond ((= (atof (getvar "acadver")) 16.2) "AeccXUiLand.AeccApplication.3.0"); 2006 ((= (atof (getvar "acadver")) 17.0) "AeccXUiLand.AeccApplication.4.0"); 2007 ((= (atof (getvar "acadver")) 17.1) "AeccXUiLand.AeccApplication.5.0"); 2008 ('T "AeccXUiLand.AeccApplication") ) ) (if (vl-catch-all-error-p (setq AeccObj (vl-catch-all-apply 'vla-getinterfaceobject (list (vlax-get-acad-object) aecstring) ; connect to Civil 3D ) ) ) NIL AeccObj ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Jetzt nur noch bei den Punkten die Properties Location oder Easting, Northing und Elevation abfragen, das wars dann schon. ------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004
|
erstellt am: 16. Nov. 2007 07:43 <-- editieren / zitieren --> Unities abgeben:
@Dietrich, es geht darum, wenn ich z.B. in Hamburg Zeichnungen abgeben muß, nach dem Hamburger Normierungskatalog (dortige Zeichenvorschrift), dann muß ein 3D-Punkt durch einen Block dargestellt werden, mit den Attributen Punktnummer, Höhe, Bemerkung, ein CIVIL-Punkt ist nicht zulässig. Und deshalb bin ich ein bißchen am rumexperimentieren. @Udo, auf Deine Antwort habe ich schon heimlich gehofft, ich werde Deine Codes aber erst nächste Woche ausprobieren können, die U's gibt es erstmal auf verdacht, aber ich denke, sie sind gut investiert. Ich melde mich auf jeden Fall, ob es funktioniert hat oder nicht. Ganz nebenbei, gibt es sonst keinen, der mein Problem bereits gehabt hat? ------------------ viele Grüße Jörn 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 Map/Civil 3D 2005-2025, aktuelle SPs.
|
erstellt am: 16. Nov. 2007 08:30 <-- editieren / zitieren --> Unities abgeben: Nur für joern bosse
Zitat: Original erstellt von joern bosse: ...Ganz nebenbei, gibt es sonst keinen, der mein Problem bereits gehabt hat?
Doch, genau das gleiche Problem kenn ich gut, allein schon um Kunden ohne Civil auch eine etwas intelligentere Zeichnung übergeben zu können. Aber das Problem dabei ist, das ein Civil Punkt 2 Stile besitzt, einen Punktstil (Block für Symbol) und einen Punktbeschriftungsstil , somit gibt es keine echte Chance gleiche Darstellung aller Punkte nach Umwandlung in Blöcke mit Attributen zu gewährleisten. Dann muss man vorher Festlegungen treffen, dass bestimmte Civil Funktionalitäten nicht genutzt werden dürfen.
------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004
|
erstellt am: 18. Nov. 2007 09:16 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|