| |
| 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: Blöcke aus BIM mit Basispunkt 0,0 mt Geo-Bezug (731 / mal gelesen)
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 10. Mai. 2022 12:27 <-- editieren / zitieren --> Unities abgeben:
Thema: Kanalbauprojekt aus BIM-Software Üblicherweise .. .. macht man einen Schacht (oder Deckel) als Block mit Basis 0,0 und fügt die dann in den Lageplan ein - auf entsprechend grossen Koordinaten. Jetzt ... .. habe ich ein Kanalbauprojekt aus irgendeinem BIM-Export, da ist - jeder Kanalschacht ein eigener Block - der einmal verwendet (referenziert) wird - BIM-Attribute trägt - einen Einfügepunkt von 0,0 und - einen Basispunkt gemäss seiner Position im Lageplan hat Ein Folgeprogramm soll damit gefüttert werden und stolpert über die zu hohen Koordinatenwerte des Plans. Reines Verschieben des ganzen Plans Richtung 0,0 bringt nichts, weil damit die Einfügepunkte von 0,0 wieder weglaufen. Ziel ist es, das auf "übliche" Logik umzubauen und dann Richtung 0,0 zu verschieben. Grobe Ideen habe ich, aber bevor ich da das Rad neu erfinde - kennt wer die Thematik und eine einfache/fertige Lösung dazu? ("Ursprung" gilt nicht ..) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadwomen Ehrenmitglied V.I.P. h.c. Mädchen für fast alles
Beiträge: 3067 Registriert: 26.08.2002 ACAD R11 - 2018.1.2 (Plant3D) AVIS ACAD LT 2013- 2020 ZWCAD 2015 Versuch "nun ja" [s]History P3D 2012/(13) SP und Hotfix([/s]<P> Windows 10 / 64 Bit Xeon CPU 3.5GHz 16GB Ram NVIDIA Quadro P2000 3x Dell TV100 88P Monitore
|
erstellt am: 10. Mai. 2022 13:06 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Hy Peter2 keine org Datei oder isybau export ? cu cw ------------------ Also ich finde Unities gut ... und andere sicher auch ------------------------------------------------ cadwomen™ Plant ist nur die Spitze des Berges der da treibt ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 10. Mai. 2022 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Hallo Peter, ich versteh da was nicht: Zitat: - einen Einfügepunkt von 0,0 und - einen Basispunkt gemäss seiner Position im Lageplan hat
Einfügepunkt und Basispunkt ... ist das nicht das Selbe ??? Hast du mal einen Beispielblock ? Es wäre, denke ich, kein Problem die Basispunkte aller dieser Blöcke zu ändern und die Inserts an die Änderung anzupassen/zu verschieben. ------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de 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 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 10. Mai. 2022 13:11 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Hallo Peter, nur auf die Schnelle: Code:
(defun c:test ( / (OBJ VEKTOR VLA-OBJ) (if (setq obj (car(entsel "\nBlock picken"))) (progn (setq vla-obj (vlax-ename->vla-object obj)) ;;;1. Vektor ermitteln, wenn man davon ausgeht, das ein Kreis den Schacht markiert (vlax-for ITEM(vla-item(vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-Effectivename vla-obj)) (if (= (vla-get-Objectname ITEM)"AcDbCircle") (setq vektor (vlax-get ITEM 'Center)) )) ;;;2. Vektor auf alle Objekte im Block anbringen (vlax-for ITEM(vla-item(vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-Effectivename vla-obj)) (vla-move ITEM (vlax-3D-Point vektor)(vlax-3D-Point '(0 0 0)))) ;;;3 BlockReferenz schieben um Vektor (vla-move vla-obj (vlax-3D-Point '(0 0 0))(vlax-3D-Point vektor)) ) ) (princ))
Der Code ist ungetestet und vielleicht auch noch ein Denkfehler drin, aber so ungefähr müßte es funktionieren, einfach mal durchdebuggen. Und wenn alles läuft für mehrere Schächte ein Schleife drumherum bauen.
------------------ viele Grüße Jörn http://www.bosse-engineering.com Bosse_tools-Überblick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 10. Mai. 2022 13:49 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von cadwomen: ...keine org Datei oder isybau export ?...
Ich habe nur die DWG; Quelle mir nicht bekannt, Isybau unwahrscheinlich. Zitat: Original erstellt von Andreas Kraus: ... Einfügepunkt und Basispunkt ... ist das nicht das Selbe ???...
Ich will nicht Haus und Hof darauf verwetten, dass meine Terminologie absolut perfekt ist, aber ich verstehe unter .. - Basispunkt eines Blockes: Punkt im Block; das, worauf z.B. der Fang "Basispunkt" reagiert: z.B. der Mittelpunkt eines Kreises oder der Schnittpunkt zweier Linien oder eben was ganz freies. In einem Block einmal definiert. - Einfügepunkt: versch. Punkte in der Zeichnung, wo der Block abgelegt ist, der z.B. unter Eigenschaften auftaucht und z.B. am Ende einer freien Linie oder
Zitat: Original erstellt von joern bosse: ...aber so ungefähr müßte es funktionieren, einfach mal durchdebuggen. ...
Vielen Dank, werde berichten. Evtl. nicht mehr heute
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003 Win 10 bzw. 11 / 64 Pro AutoCAD MAP 3D 2023 BricsCAD 24
|
erstellt am: 10. Mai. 2022 17:47 <-- editieren / zitieren --> Unities abgeben:
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 11. Mai. 2022 08:06 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 11. Mai. 2022 08:50 <-- editieren / zitieren --> Unities abgeben:
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 11. Mai. 2022 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Hallo Peter, ich habe mal getestet, funktioniert, wenn ich vom ersten 1. Volumenkörper die Centroid-Koordinate als Vektor verwende (vorausgesetzt, alle Controid-Koordinaten sind im Zentrum des Blockes): Code:
(defun c:test ( / OBJ VEKTOR VLA-OBJ) (if (setq obj (car(entsel "\nBlock picken"))) (progn (setq vla-obj (vlax-ename->vla-object obj)) ;;;1. Vektor ermitteln, Controid des ersten Volumenkörpers (vlax-for ITEM(vla-item(vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-Effectivename vla-obj)) (if (and(not vektor) (= (vla-get-Objectname ITEM)"AcDb3dSolid")) (setq vektor (reverse(cons 0(cdr(reverse(vlax-get ITEM 'Centroid)))))) )) ;;;2. Vektor auf alle Objekte im Block anbringen (vlax-for ITEM(vla-item(vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-Effectivename vla-obj)) (vla-move ITEM (vlax-3D-Point vektor)(vlax-3D-Point '(0 0 0)))) ;;;3 BlockReferenz schieben um Vektor (vla-move vla-obj (vlax-3D-Point '(0 0 0))(vlax-3D-Point vektor)) (vla-update vla-obj) ) ) (princ))
Ablauf: 1. Blockreferenz picken 2. In der zugehörigen Blockdefintion die Centroid-Koordinate des zuerst gefundenen 3D-Volumenkörpers als 2D-Vektor in Variable speichern. 3. Alle Blockelemente innerhalb der Funktion von Vektorkoordinate auf 0,0,0 schieben. 4. Blockreferenz zur Korrektur von 0,0,0 auf Vektorkoordiante schieben.
------------------ viele Grüße Jörn http://www.bosse-engineering.com Bosse_tools-Überblick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 11. Mai. 2022 09:41 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Ah ... wie ichs mir gedacht hab Ich hab dir mal was zusammengetippt, bei mir funktionierts. Code: (defun c:blkdefs-0-0 (/ BOX_LIST OBJ_LIST P) (vl-load-com) (vla-startundomark (k_ac-doc)) (DEFUN K_->OBJ_NAME (NAME) (COND ((= (TYPE NAME) (QUOTE ENAME)) (vlax-ename->vla-object NAME) ) ((= (TYPE NAME) (QUOTE VLA-OBJECT)) NAME) ((= (TYPE NAME) (QUOTE STR)) (vlax-ename->vla-object (HANDENT NAME)) ) ((= (TYPE NAME) (QUOTE LIST)) (vlax-ename->vla-object (CDR (ASSOC -1 NAME))) ) ) ) (DEFUN K_COLLECTION->LIST (COLLECTION / LISTE) (COND ((MEMBER "VLA-COLLECTION->LIST" (ATOMS-FAMILY 1)) (SETQ LISTE (VLA-COLLECTION->LIST COLLECTION)) ) ((MEMBER "VLAX-FOR" (ATOMS-FAMILY 1)) (SETQ LISTE (LIST)) (VLAX-FOR DUMMY COLLECTION (SETQ LISTE (CONS DUMMY LISTE))) (REVERSE LISTE) ) ) LISTE ) (DEFUN K_GET_BOX (ENT_NAME / MINP MAXP) (vla-GetBoundingBox (K_->OBJ_NAME ENT_NAME) (QUOTE MINP) (QUOTE MAXP) ) (SETQ MINP (vlax-safearray->list MINP)) (SETQ MAXP (vlax-safearray->list MAXP)) (LIST MINP MAXP) ) (DEFUN K_SATZ->ENTLIST (SATZ) (IF (= (TYPE SATZ) (QUOTE PICKSET)) (VL-REMOVE-IF-NOT (QUOTE (LAMBDA (DUMMY) (= (TYPE DUMMY) (QUOTE ENAME)))) (MAPCAR (QUOTE CADR) (SSNAMEX SATZ)) ) ) ) (DEFUN K_SATZ->OBJLIST (SATZ) (MAPCAR (QUOTE vlax-ename->vla-object) (K_SATZ->ENTLIST SATZ) ) ) (foreach ins (k_satz->objlist (ssget '((0 . "INSERT")))) (setq box_list (apply 'append (mapcar 'k_get_box (setq obj_list (k_collection->list (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)) ) (vla-get-name ins) ) ) ) ) ) ) (setq p (list (/ (+ (apply 'min (mapcar 'car box_list)) (apply 'max (mapcar 'car box_list)) ) 2.0 ) (/ (+ (apply 'min (mapcar 'cadr box_list)) (apply 'max (mapcar 'cadr box_list)) ) 2.0 ) ) ) (foreach obj obj_list (vla-move obj (VLAX-3D-POINT p) (VLAX-3D-POINT '(0 0))) ) (vla-move ins (VLAX-3D-POINT '(0 0)) (VLAX-3D-POINT p)) ) (vla-endundomark (k_ac-doc)) )
------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 11. Mai. 2022 10:09 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Hallo, also mir kam so ein Gedanke.
Code: (defun c:BlockAufNull (/ AWS VIEWCTR-ORG) (if (and(setq AWS (car (entsel)))(setq AWS (cdr (assoc 2 (entget AWS))))) (progn (command "_-bedit" AWS) (command "zoom" "g") (setq VIEWCTR-ORG (getvar "VIEWCTR")) (command "schieben" "alle" "" VIEWCTR-ORG "0.0,0.0") (command "_BCLOSE" "speichern") (command "schieben"(ssget "x"(list (cons 2 AWS)(cons 410 (getvar "ctab")))) "" "0.0,0.0" VIEWCTR-ORG) ) ) )
------------------ Gruß Wolfgang
[Diese Nachricht wurde von Meldin am 11. Mai. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 11. Mai. 2022 14:40 <-- editieren / zitieren --> Unities abgeben:
|