Parameter-Bearbeitung von Dyn. Blöcken - Auswahl via ssget - c&p in Befehlszeile

Parameter-Bearbeitung von Dyn. Blöcken - Auswahl via ssget - c&p in Befehlszeile

Anonymous
Nicht anwendbar
916Aufrufe
6Antworten
Nachricht 1 von 7

Parameter-Bearbeitung von Dyn. Blöcken - Auswahl via ssget - c&p in Befehlszeile

Anonymous
Nicht anwendbar

Hallo zusammen, ich habe einmal folgende Frage zu der vielleicht jemanden von euch eine Lösung bekannt ist:

es ist ein dynamischer Block in einer Zeichnung vorh. . Dieser befindet sich 50x in einer Zeichnung und wurde bereits geändert (Damit ändert sich der Blockname von "Kasten" zu einem Anonymen Block *U?! ) Beim Ausspielen der Blockdaten mit den Express-Tools erhält man für die Blöcke die *U-Bezeichnung. Eine feste Zuordnung (selbst wenn sich der *U-Wert ändert) existiert immer durch einen Attribut-Wert z.B. 001,002 usw. In dem Block sind Parameter eingebaut. Beispielsweise ein Kreis und der dazugehörige Parameter lautet: Halbmesser.

Es gab vor einiger Zeit auf der Seite CAD.de eine Frage wie man diese Werte ansprechen kann:

Der Fragesteller begann mit folgender Vorgehensweise:

https://ww3.cad.de/foren/ubb/Forum145/HTML/003826.shtml

(command "-einfüge" "N:/Konstruktion/AutoCAD/Block_Konstruktion/Verbinder/Spax-Schraube.dwg" P20 "" "" "")

(setq DBobj (vlax-ename->vla-object (entlast)))

(setProperty (vlax-ename->vla-object DBobj) "Länge Ø4" 45)

Block Einfügen - letzen (eingefügten) Block ansprechen? - Parameter-Wert ändern. Der Lisp-Code wurde im Laufe des Dialogs noch etwas ausgearbeitet.

Suche nach eine Copy und Paste Variante aus Excel mit der alle 50 Blöcke angesprochen werden können.

Könnte man so wie unten angezeigt vorgehen? Wenn ja, wo liegt noch ein Fehler vor?

(command  "_select" (ssget "X" '((2 . "`*U6")))) - Block anwählen

(setq DBobj (vlax-ename->vla-object (entlast))) - letzten gewählten Block ansprechen?

setProperty (vlax-ename->vla-object DBobj) "Halbmesser" 45) - Parameter-Wert ändern.

Würde so etwas gehen? Ist als "Übergangslösung" gedacht.

Excel-Liste enthält sowohl Attribut-Werte als auch Parameter-Werte. Code könnte ja dann zusammengefügt werden.

Zeilen aus Excel kopieren in ACAD einfügen und Werte werden geändert....

Dankeschön für eure Beiträge im Voraus.

Sascha

 

0 „Gefällt mir“-Angaben
Akzeptierte Lösungen (1)
917Aufrufe
6Antworten
Antworten (6)
Nachricht 2 von 7

cadffm
Consultant
Consultant
Was soll der Thread denn nun plötzlich? Unter anderem Account und zudem ohne neue Informationen? Sollte man das Thema nicht besser WEITERHIN HIER forführen? Wenn ich keine Probleme mit dem Forum und meinem Browser? hätte, würden man oben diesem Link folgen können zum bereits bestehenden Thread: https://forums.autodesk.com/t5/autocad-produktfamilie-deutsch/wie-kann-ich-in-autocad-dynamische-blo...

Sebastian

0 „Gefällt mir“-Angaben
Nachricht 3 von 7

Anonymous
Nicht anwendbar

Hallo CADffm, da habe ich jetzt wohl komplett für Verwirrung gesorgt. Also wie ich schon an michele.mk in dem anderen Beitrag geschrieben hatte habe ich (leider) ein paar Foren-Nutzungsfehler gemacht: die eigentliche Lösung war ja bereits genannt worden..daher als Lösung markiert...die Folge-Frage habe ich jetzt als neuen Thread/Thema  aufgesetzt (hätte ich schon vorher machen sollen - wie gesagt jetzt ist noch mehr Verwirrung)....was jetzt vermutlich auch nicht die Beste Idee zu sein scheint....jetzt bin ich (als ursprünglicher Fragesteller) hier mit eigenem Account angemeldet. Und da ich den Fall nicht besser beschreiben kann habe ich den eben mit übernommen weil sich an der Fragestellung/Fallbeschreibung an sich eigentlich nichts ändert....au weia....

Bei Blizzard ist mir das auch schon passiert 🙂

 

Mit freundlichen Grüßen

Sascha

0 „Gefällt mir“-Angaben
Nachricht 4 von 7

cadffm
Consultant
Consultant

Hallo Sascha,

 

dann machen wir es so: Ich kopiere meine Antwort noch einmal hier hin (aus dem alten Thread),

im alten Thread verweisen wir auf diesen Folge-Thread und dann

 

a) hoffen wir im Alten postet niemand mehr

b) du antwortest mir HIER noch einmal als Reaktion auf meine Antwort HIER!! nicht im alten Thread 😉

 

___

 

>>"Beim Ausspielen der Blockdaten mit den Express-Tools erhält man für die Blöcke die *U-Bezeichnung."

 

Das ist der richtige Blockname, welcher dem normalen Anwender vorenthalten wird.

 

 

 

>>"Eine feste Zuordnung.."

 

Die feste Zuordnung ist nur in deinem Kopf "fest", denn Theoretisch könnte es ja mehrere Blockreferenzen mit diesen Attribut&Parameterwerten geben, damit dann nicht mehr eindeutig sein. Eine feste Zuordnung ist Dateipfad+Dateiname+HANDLE(!!)

 

 

 

>>"Würde denn trotzdem noch der effective-name benötigt werden?"

 

Um deine (in der Sekunde gemeinte) Frage zu beantworten: Nein, wäre nicht nötig. ABER: SSGET würde ja ALLE Blockreferenzen dieses Blockes (*U6) erfassen, das könnten 0 oder einer, ebenso aber auch 200 sein.

 

 

 

>>"(setq DBobj (vlax-ename->vla-object (entlast))) - letzten gewählten Block ansprechen?"

 

Es geht dir nicht um Blöcke, sondern Blockreferenzen (da sollte man bei so einem Thema schon ordentlich unterscheiden), und entlast würde dir das  | letzte Objekt liefern, aber am Anfang hast du von "Expresstool ATTOUT" gesprochen, also erstellt du doch nichts, sondern du hast bereits!? Das verwirrt mich etwas. Leider habe ich keine Lust&Laune [=Zeit] dich zur perfektlösung zu führen, das wäre dann eine gescheite Routine zum Export/Import, inkl. Parameter-Änderungen. Ich hoffe dennoch die Antwort hat etwas geholfen.

 

 

 

Sebastian

0 „Gefällt mir“-Angaben
Nachricht 5 von 7

Anonymous
Nicht anwendbar

Halli hallo CADffm,

 

prima 😊 Dann antworte ich hier und Entschuldigung nochmal für die etwas unglückliche erste Nutzung des Forums.

 

Und: da fällt einem Selber dann auf das man vielleicht für diesen Fall doch nicht genug Informationen mitgegeben hat, damit sich andere ein Gesamtbild machen können. Je mehr Informationen umso besser kann jemand helfen….Ich könnte jetzt Besserung geloben…aber vermutlich läuft die nächste Anfrage genauso chaotisch…naja bis auf den anderen Nutzernamen…..und eine perfekte Lösung benötige ich auch gar nicht…ich persönlich glaube das es die auch gar nicht gibt. Es gibt für viele Fälle eine relativ zufriedenstellende Lösung…die wiederum davon abhängig ist was der Nutzer möchte und auch davon für wen der Nutzer arbeitet. Man muss letztendlich wissen was man mit der Zeichnung darstellen möchte und, wenn es Daten gibt, die weiterverarbeitet werden sollen, wie man diese sinnvoll ausspielen, weitergeben oder weiternutzen kann. Und eine Lösung die für Anwender 1 gilt muss nicht zwangsläufig auch für Anwender 2 Gültigkeit haben…meist sind es eben individuelle Ansätze/Lösungen die gesucht werden….Aber ich glaube an die Macht der Möglichkeiten und die Erfahrung anderer Anwender:

 

Zum Fall hoffe ich das ich das noch etwas deutlicher Beschreiben kann:

Also die *U6 Kennung war nur ein Beispiel. Da war, wenn ich das in der Korrektur von Udo richtig gesehen haben ein Zeichen falsch in dem ssget-Schrieb…und damit hat das schon nicht funktioniert. Dankeschön nochmal an Udo Hübner.

 

Bitte Korrektur wenn ich Begriffe nicht richtig verwende:

Ich starte immer mit einer Vorlagenzeichung in der die maximale Anzahl an möglichen zu ändernden Blöcken enthalten ist und die Excel-Liste ist auf diese eine Zeichnung zugeschnitten.

Es gibt eben in dieser Zeichnung dynamische Blöcke die jeweils Attribut- und Parameter-Werte besitzen.

Somit ist ein attout möglich das ich wiederum in der Excel-Liste weiterverarbeite.

Attributwerte werden teilweise bei Änderung von Parametern angepasst.

Bei jedem Block-Attribut der Beispielsweise 50 Blöcke mit der Attributs-Kennzeichung „Name“ ist bereits ein Wert eingetragen (001,002,003 usw.)

Somit habe ich gefühlt eine „feste“ Zuordnung zwischen *U und Attribut „Name“

Die *U-Werte sind aus dem Ursprungs-Block „Kasten“ entstanden…denn, wenn ich mir das in anderen Beiträgen richtig durchgelesen habe ändert der Block in dem Moment seinen Namen von Kasten auf *U sobald ich auch nur einen seiner dynamischen Parameter ändere. Ziehe ich auch nur eine Seite länger dann….

 

Zwischenfrage: kann sich der *U-Wert noch einmal ändern oder bleibt der in dieser Zeichnung immer so wie nach dem ersten anpacken?

 

Also war meine Überlegung:

Wenn ich jetzt in der Excel-Liste abgeänderte Werte (die ja sowohl für Attribut als auch Parameter gelten..und auch nur für diese) umgekehrt wieder einspielen möchte (würde hier eben gerne die Parameter-Werte ansprechen denn nach denen ändern sich ja wiederum die Attribut-Werte) und ich meine Excel-Liste in einem Ausgabe-Bereich der sich auf den jeweiligen Block?/die Blockreferenz bezieht, so verbiege das, wenn ich Beispielsweise bei Länge oder Breite einen anderen Wert eingetragen habe dann:

Wähle ich diese eine Blockreferenz mit ssget und den jeweiligen zusammengestellten Werten aus der Liste aus (ssget *U…usw) – das wäre der gelöste erste Teil.

Löse wiederum die Auswahl und komme mit entlast dahin das ich für das letzte gewählte Objekt (Blockreferenz) die Parameter-Werte ändere.

Ist das technisch in Kombination mit Befehlszeile überhaupt möglich?

Und wenn ja:

Wie lautet dann die korrekte Schreibweise?

 

Mir fehlt der Schrieb nach ssget.

 

(command  "_select" (ssget "X" '((2 . "`*U6")))) - Block/ Blockreferenz anwählen

(setq DBobj (vlax-ename->vla-object (entlast))) - letzten gewählten Block ansprechen?

setProperty (vlax-ename->vla-object DBobj) "Halbmesser" 45) - Parameter-Wert ändern

 

In dem Englisch-Sprachigen Forum gab es eine komplette Zeile als LISP.

Ich suche für meinen Fall nach einer Art „Stand-alone“ das mit c&p in der Befehlszeile funktionieren soll.

 

Vielleicht konnte ich meinen Fall jetzt noch etwas näher erläutern…oder ich habe es verschlimmbessert…ist ja in der heutigen Zeit auch ein gern genommenes Stil-Mittel….oh die Deutsche Bahn ist nicht pünktlich genug – also verteilen wir die Unpünktlichkeit auf mehrere Anbieter 😄

 

Euch noch einen schönen Abend

 

Sascha

0 „Gefällt mir“-Angaben
Nachricht 6 von 7

cadffm
Consultant
Consultant
Akzeptierte Lösung

Verändert man über die dynamischen Parameter eine Blockreferenz, so wird eine k

Kopie des Blockes erstellt mit anonymen Namen *Unnn.

Die Blockreferenz an der man herumgezuppelt hat verweist dann auf diesen neuen Block.

In der Eigenschaftenpalette wird der ursprüngliche Blockname angezeigt.

So ca. schaut es aus, wenngleich es im Detail noch mehr zu wissen gibt.

 

Entlast gibt das zuletzt erstellte Objekt wieder, nicht das zuletzt gewählte.

SSGET wird auch nicht nötig sein, denn du hast ja das HANDLE

Abstatt entlast, handent einsetzen.

(vlax-ename->vla-object(handent "hierdasHandle"))

 

Die Zeile zu Parameterwert ändern hast du ja, solange kein Fehlerfall vorkommt sollte dies also "gelöst" sein.

Attributwerte sind was anderes, bedürfen also einer anderen Routine.

 

 

Nur für die Fantasie: Sowas könnte man elegant aus ACAD heraus steuern, ebenso aus Excel, 

also ohne Probleme mit einem Klick.

 

Aber entweder müßte man sich und die Dateien auf ein Programm anpassen

oder sinnvoller ein Programm auf seine Bedürfnisse.

Professionell(er) gehören da aber viele Fehlerabfang Routinen hinein.

 

Ab hier wünsche ich viel Glück,

oder einen Dienstleister der es problemlos liefern kann.

Braucht ihr es absehbar länger/öfter, so sollte man ruhig über eine Dienstleistung nachdenken, alleine wegen der möglichen Fehlerquellen die man ggf. nicht bedenkt.

 

Sebastian

Nachricht 7 von 7

Anonymous
Nicht anwendbar

Hallo CADffm,

 

das war ein prima Hinweis. Das man ssget letzten Endes dafür gar nicht benötigt wenn man das Handle schon hat ist interessant. Da wird wohl doch mal eine Schulung bei mir fällig 🙂  Und: das soll wirklich nur eine "Notlösung" sein die hoffentlich spätestens in 12Monaten wieder eingestampft werden kann.....Vielen Dank nochmal für die Lösung bei der Schreibweise.

 

"herumgezuppelt" 🙂 🙂 sehr gut

 

Dir/euch allen hier noch einen schönen Tag

 

 

0 „Gefällt mir“-Angaben