| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Dynamische Blöcke mit dynamischen Attributen (9366 mal gelesen)
|
Plenz Mitglied
Beiträge: 71 Registriert: 01.09.2010 ACAD Archi 2015
|
erstellt am: 01. Sep. 2010 10:38 <-- editieren / zitieren --> Unities abgeben:
Ich beschäftige mich seit kurzem mit dynamischen Blöcken und erwarte vielleicht zu viel, aber vielleicht geht es ja doch irgendwie? 1.) Ich habe eine Schraube konstruiert, deren Abstand zwischen Kopf und Mutter ich stufenlos einstellen kann (je nach Stärke der zu verschraubenden Teile). Aus diesem Abstand errechnet sich die Gesamtlänge der Schraube, die ich in einem Attribut anzeigen lasse. Das klappt auch so weit. Nun möchte ich den Längenwert aber in 5mm-Schritten gerundet haben. Offensichtlich kann man für Attributwerte auch Formeln benutzen, aber über deren Syntax schweigt sich die AutoCAD-Hilfe aus. Wo kann ich mehr darüber lesen? 2.) Ist es möglich, Attributinhalte zu übertragen? Ich habe eine Schnittlinie gezeichnet (also links und rechts jeweils ein Pfeil, eine gestrichelte Linie und ein Attribut mit dem Schnittbuchstaben) und wenn ich z.B. den linken Schnittbuchstaben ändere, soll der rechte automatisch den gleichen Inhalt bekommen. 3.) Gibt es ein Ereignis "Block wurde geändert", das eine VBA-Routine triggern kann? (Eine solche Routine könnte dann z.B. Werte runden oder Attribute kopieren etc.) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 01. Sep. 2010 10:48 <-- editieren / zitieren -->
Hi, herzlich willkommen bei CAD-de! >> Offensichtlich kann man für Attributwerte auch Formeln benutzen Über Schriftfeld geht das und in Schriftfeldern kannst Du dann auch Formeln verwenden. >> Nun möchte ich den Längenwert aber in 5mm-Schritten gerundet haben
Das kannst Du im Parameter definieren, den Parameter anklicken und im Eigenschaftsfenster den Abstands-Typ auf 'Inkrement' umstellen, dann darfst Du Deine 5mm als Inkrement mitgeben. >> Ist es möglich, Attributinhalte zu übertragen?
Ja, geht schon, auch wieder über Schriftfeld, aber Du wirst Dich vor Anwendern schützen müssen (z.B. durch eindeutige Hinweise in der Attributsdefinition, dass die nicht das falsche Feld modifizieren, denn dann wäre Deine Schriftfelddefinition weg. >> Gibt es ein Ereignis "Block wurde geändert", das eine VBA-Routine triggern kann?
Ja ==> ObjectModified. - alfred -
------------------ www.hollaus.at |
Plenz Mitglied
Beiträge: 71 Registriert: 01.09.2010 ACAD Archi 2015
|
erstellt am: 01. Sep. 2010 14:12 <-- editieren / zitieren --> Unities abgeben:
>> herzlich willkommen bei CAD-de! Danke und auch danke für die schnelle Antwort. >>Über Schriftfeld geht das und in Schriftfeldern kannst Du dann auch Formeln verwenden. Kurios: wenn ich SCHRIFTFELD eingebe und in der Auswahlliste "Formel" anklicke, kommt der Hinweis "nur im Blockeditor möglich". Ich bin aber im Blockeditor! Was aber geht: ATTDEF und dort ein Schriftfeld einbauen. Wobei mir aber immer noch der Syntax für Formeln fehlt. Runden mit int() scheint jedenfalls nicht zu funktionieren. Oder kann der Formelrechner nur Grundrechenarten? >>Das kannst Du im Parameter definieren, den Parameter anklicken und im Eigenschaftsfenster den Abstands-Typ auf 'Inkrement' umstellen, dann darfst Du Deine 5mm als Inkrement mitgeben.
Nein, so geht das nicht. Ich will ja nicht den dargestellten Abstand staffeln, denn der muss haargenau der Stärke der zu verschraubenden Teile entsprechen. Ich will diesen krummen Abstand als aufgerundete Zahl darstellen. >> Ja, geht schon, auch wieder über Schriftfeld, aber Du wirst Dich vor Anwendern schützen müssen (z.B. durch eindeutige Hinweise in der Attributsdefinition, dass die nicht das falsche Feld modifizieren, denn dann wäre Deine Schriftfelddefinition weg.
Keine Ahnung, wie das gehen könnte. In einem Schriftfeld kann ich doch nichts per Hand eingeben, wo sollte ich denn Buchstaben ändern? Manuell ändern kann ich nur den Inhalt eines Attributs. Aber wie greife ich darauf zu? Wenn ich ein Schriftfeld erstelle und "Blockplatzhalter" auswähle, erscheinen weder Attribute noch deren Inhalte, sondern nur allgemeine Sachen und dynamische Parameter. >> Ja ==> ObjectModified.
Danke, das wäre immerhin eine Möglichkeit, wenn nichts anderes klappt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 01. Sep. 2010 19:22 <-- editieren / zitieren -->
Hi, >> Oder kann der Formelrechner nur Grundrechenarten? Ziemlich genau dieses, leider. Es gehen schon mathematische Funktionen wie z.B. ABS oder SIN, ... Round oder vergleichbares wüsste ich nicht. >> Nein, so geht das nicht. Ich will ja nicht den dargestellten Abstand staffeln, denn der muss haargenau der Stärke >> der zu verschraubenden Teile entsprechen. Ich will diesen krummen Abstand als aufgerundete Zahl darstellen.
Dann leider nein, probier da aber vielleicht mal eine Bemassung einzusetzen statt eines Attributs, das den ermittelten Wert hinschreiben soll. >> Manuell ändern kann ich nur den Inhalt eines Attributs. Aber wie greife ich darauf zu?
Im Blockeditor erstellst Du ein zweites Attribut und gibst dann dem Inhalt des zweiten Attributs (mit der rechten Maustaste) ein Schriftfeld als Inhalt (und da den Wert des ersten Attributs). - alfred -
------------------ www.hollaus.at |
Plenz Mitglied
Beiträge: 71 Registriert: 01.09.2010 ACAD Archi 2015
|
erstellt am: 02. Sep. 2010 08:56 <-- editieren / zitieren --> Unities abgeben:
>>>> Oder kann der Formelrechner nur Grundrechenarten?>> Ziemlich genau dieses, leider. Es gehen schon mathematische Funktionen wie z.B. ABS oder SIN, ... Round oder vergleichbares wüsste ich nicht. Woher weißt du, dass diese Funktionen gehen? Try and Error, oder gibt es eine Doku? Der Rest mit den Attributen war mir schon klar, aber diese erschienen nicht im Schriftfeld-Editor. Inzwischen weiß ich aber, warum: ich hatte ihnen die gleichen Namen gegeben wie einigen dynamischen Parametern
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 Kinder, kauft Kämme! Es kommen lausige Zeiten.
|
erstellt am: 02. Sep. 2010 08:59 <-- editieren / zitieren --> Unities abgeben: Nur für Plenz
|
Ingo Struck Mitglied Holztechniker
Beiträge: 459 Registriert: 08.01.2010 Intel Core i7-3770 16 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2017 SP1 - deutsch
|
erstellt am: 02. Sep. 2010 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für Plenz
|
Plenz Mitglied
Beiträge: 71 Registriert: 01.09.2010 ACAD Archi 2015
|
erstellt am: 02. Sep. 2010 11:50 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank, mit den Formeln komme ich jetzt endlich klar trunc(UpdatedDistance/5)*5+5 macht genau das, was ich wollte. Nur die Sache mit den zwei Buchstaben-Attributen klappt (noch?) nicht. Ich kann beim Erstellen des zweiten Attributs auf den Wert des ersten zugreifen, der Buchstabe erscheint dann auch korrekt, aber das war's. Wenn ich anschließend den ersten Buchstaben ändere, bleibt der zweite unverändert, auch nicht nach REFRESH. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 02. Sep. 2010 11:56 <-- editieren / zitieren -->
Hi, meinst Du mit 'REFRESH' den Befehl '_REGEN'? Wenn ja, dann mach mal eine Musterzeichnung mit einem solchen eingefügten Block (Beschreibung, wenn viele Attribute drin sind, welche Du meinst) und dann hier ein upload, dann wird aus 'ahnen' ==> 'sehen'. Hilfe zum Upload gibt's >>>hier<<<. - alfred - ------------------ www.hollaus.at |
Plenz Mitglied
Beiträge: 71 Registriert: 01.09.2010 ACAD Archi 2015
|
erstellt am: 02. Sep. 2010 15:47 <-- editieren / zitieren --> Unities abgeben:
>> In diesem Zweig[/URL] gibt es eine tabellarische Auflistung verwendbarer FunktionenHeureka! Die Antwort ist ganz einfach: der Formeleditor funktioniert genau so wie der Taschenrechner KAL, dessen Syntax und Fähigkeiten in der AutoCAD-Hilfe beschrieben ist. (Bei mir in ACAD2006 allerdings mit einem Fehler: rnd() statt round().)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Plenz Mitglied
Beiträge: 71 Registriert: 01.09.2010 ACAD Archi 2015
|
erstellt am: 02. Sep. 2010 15:57 <-- editieren / zitieren --> Unities abgeben:
>> mach mal eine Musterzeichnung mit einem solchen eingefügten Block (Beschreibung, wenn viele Attribute drin sind, welche Du meinst) und dann hier ein uploadDanke für das Angebot, aber bringt das was? So wie ich das sehe, kann man Schriftfelder in Attributen nur während ATTDEF definieren. Nachträglich hat man über die Eigenschaften des Attributs keinen Zugriff mehr auf das Schriftfeld. Wenn man etwas ändern will, muss man das Attribut löschen und neu machen. Du könntest bei meiner Musterzeichnung also nicht sehen, was ich wie definiert habe. Oder irre ich mich? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Plenz Mitglied
Beiträge: 71 Registriert: 01.09.2010 ACAD Archi 2015
|
erstellt am: 03. Sep. 2010 09:29 <-- editieren / zitieren --> Unities abgeben:
Nun noch mal zum Thema Attribute aktualisieren. Ich habe mir eine VBA-Routine geschrieben, die durch ObjectModified getriggert wird. Sie überprüft, ob das übergebene Objekt eine Blockreferenz ist, und wenn ja, wird die Zeichnung regeneriert. Dadurch wird das dynamische Schriftfeld in dem Block aktualisiert. Dummerweise löst diese Aktualisierung wieder ObjectModified aus, und die Zeichnung wird noch mal regeneriert. Geht das nicht irgendwie eleganter? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingo Struck Mitglied Holztechniker
Beiträge: 459 Registriert: 08.01.2010 Intel Core i7-3770 16 GB RAM AMD FirePro V3900 (FireGL V) Windows 7 Pro SP1 AutoCAD 2017 SP1 - deutsch
|
erstellt am: 23. Sep. 2010 07:15 <-- editieren / zitieren --> Unities abgeben: Nur für Plenz
|
Jovo Mitglied
Beiträge: 3 Registriert: 15.04.2011
|
erstellt am: 15. Apr. 2011 15:42 <-- editieren / zitieren --> Unities abgeben: Nur für Plenz
Hallo zusammen! Ich versuche gerade in AutoCAD einen dynamischen Block zu erstellen, der folgendes erfüllen soll. Ich möchte nebeneinander Kreise darstellen, die zueinander einen bestimmten Abstand haben. Wenn ich mit der Maus dan Block "auseinanderziehe, sollten es entsprechend mehr Kreise werden.(das habe ich soweit schon geschafft ). Jetzt möchte ich diesen Abstand variieren können (am besten mit einer Eingabemaske oder sowas). Außerdem würde ich gerne den Durchmesser der Kreise (am besten mit der selben Eingabemaske) ändern können. Das ganze soll also so ähnlich funktionieren, wie Stabstahlverlegungen von "SOFiCAD" (im Schnitt dargestellt) - nur halt ohne Stabstahlverlegung Hoffe, ich habe mein Problem verständlich dargestellt. Für Hilfen schonmal vielen, vielen Dank! Grüße, Jovo [Diese Nachricht wurde von Jovo am 15. Apr. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |