Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Skizzierte Symbole indizieren

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Skizzierte Symbole indizieren (3061 mal gelesen)
melzig
Mitglied
Maschinenbautechniker


Sehen Sie sich das Profil von melzig an!   Senden Sie eine Private Message an melzig  Schreiben Sie einen Gästebucheintrag für melzig

Beiträge: 396
Registriert: 15.01.2003

Intel Xeon CPU E5-1650v2 @3,5 GHz; 32 GB RAM
Quadro K4000 3 GB
2x 20" TFT LG Flatron L2000CN
Space Pilot 3D Connexion
Windows 7 Professional 64 Bit
Inventor Professional 2015
-64-Bit-Edition-
Inventorintegration für
Autodesk Productstream Professional 2011

erstellt am: 25. Jun. 2009 08:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Inventor-VBA-Spezies !

Ich muß gleich eine Sache klarstellen. Ich habe nur sehr, sehr wenige bis keine Kenntnisse von dieser VBA-Materie.
Wir hatten hier bei uns einen netten Kollegen der das für uns programmiert hat und nun leider nicht mehr bei uns in der Firma arbeitet.

Über eine benutzerdefiniertze Schaltleiste wird ein Makro aufgerufen, mit dem man Schweissstempel ( Farbstempel,Kantstempel ) in der Zeichnung einfügen kann.
Das funktioniert auch, solange das nur 1 Schweissstempel ist. Sobald man einen zweiten Stempel einfügt, kommt eine Fehlermeldung.
Ich glaube das liegt daran, das der Name für das skizzierte Symbol fest ist und beim erneuten Einfügen, wieder ein Symbol mit dem selben Namen eingefügt werden soll.

Die entsprechenden Zeilen im Modul sehen so aus:

Public Function Tabelle_zeichnen()

Dim MyDoc As DrawingDocument
Set MyDoc = ThisApplication.ActiveDocument

Dim MySketchedSymbolDef As SketchedSymbolDefinition
Set MySketchedSymbolDef = MyDoc.SketchedSymbolDefinitions.Add("Schweissangaben")

Dim MySketch As DrawingSketch
Call MySketchedSymbolDef.Edit(MySketch)

Dim MyTG As TransientGeometry
Set MyTG = ThisApplication.TransientGeometry

Dim MySL As SketchLines
Call MySketch.SketchLines.AddAsTwoPointRectangle(MyTG.CreatePoint2d(0, 0), MyTG.CreatePoint2d(8, 4.7)) u.s.w.

Um das zu verhindern müßte der Name indiziert werden. Also beim ersten Einfügen z.B. Schweissangaben1 ; Schweissangaben2 u.s.w.
Ich wollte das erst mit einfachem Hochzählen umgehen und habe die Zeilen so geändert:

Public Function Tabelle_zeichnen()

Dim MyDoc As DrawingDocument
Set MyDoc = ThisApplication.ActiveDocument

Dim MySketchedSymbolDef As SketchedSymbolDefinition
Dim Schweisssymbolname As String
Dim Schweisssymbolindize As Integer

Schweisssymbolindize = Schweisssymbolindize + 1
Schweisssymbolname = "Schweissangaben" & Schweisssymbolindize
Set MySketchedSymbolDef = MyDoc.SketchedSymbolDefinitions.Add(Schweisssymbolname)

Dim MySketch As DrawingSketch
Call MySketchedSymbolDef.Edit(MySketch)

Dim MyTG As TransientGeometry
Set MyTG = ThisApplication.TransientGeometry

Dim MySL As SketchLines
Call MySketch.SketchLines.AddAsTwoPointRectangle(MyTG.CreatePoint2d(0, 0), MyTG.CreatePoint2d(8, 4.7)) u.s.w.

Das funktioniert auch nur für das erste Einfügen aber nicht beim zweiten, da die Variable Schweisssymbolindize beim nächsten Lauf wieder mit 0 startet und nicht die 1 behält.

Ich habe im Code ein "debug.print Schweisssymbolindize" eingebaut und das im Direktfenster kontrolliert.
Ich habe versuchsweise diese Variable schon mal als private oder public außerhalb der Sub aber im selben Modul definiert, dann läuft aber gar nichts mehr.

Wer kann mir hier weiterhelfen ?

Das Eleganteste wäre natürlich, wenn man abfragen kann ob ein skizziertes Symbol bereits eingefügt ist und wenn ja, welchen Namen es hat. Dann müße jeweils der nächste freie vergeben werden.
Also wenn es Schweissangaben1 gibt, sollte Schweissangaben2 für das nächste Symbol vergeben werden.
Laut Objektkatalog hat die "add" Funktion für die Klasse "SketchedSymbolDefinitions" keinen Zusatz zum Hochzählen und wie ich mit dem Property "count" in der Klasse "SketchedSymbolDefinitions" umgehen soll weiß ich nicht so recht.

Wer hat schon mal so was programmiert und kann mir eventuell weiterhelfen ?

Vielen Dank im voraus !

Tschüß Frank !

[Diese Nachricht wurde von melzig am 25. Jun. 2009 editiert.]

[Diese Nachricht wurde von melzig am 25. Jun. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 25. Jun. 2009 19:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für melzig 10 Unities + Antwort hilfreich

Hi

Wenn ich den Schnipsel richtig verstehe, erzeugt das Makro eine neue Symboldefinition in der Zeichnung, besser gesagt in den Zeichnungsresourcen (im Teilebrowser). Klapp die mal auf und schau dort unter skizzierte Symbole nach. Ein zweites Symbol auf dem Zeichnungsblatt sollte per Doppelklick von dort aus eingefügt werden.

Oder Denkfehler von mir???

------------------
MfG
RK

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

melzig
Mitglied
Maschinenbautechniker


Sehen Sie sich das Profil von melzig an!   Senden Sie eine Private Message an melzig  Schreiben Sie einen Gästebucheintrag für melzig

Beiträge: 396
Registriert: 15.01.2003

erstellt am: 26. Jun. 2009 10:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Skizzierte-Symbole1.JPG


Benutzermenue.JPG


Menue-Schweissstempel-1.JPG

 
Hallo !

Vielen Dank für die Antwort!
Ja, ich kann mit einem Doppelklick das Symbol nochmal einfügen, aber eben nur eine 1:1 Kopie von dem anderen Stempel.
In dem Stempel ist aber noch Text drin und der ist bei verschiedenen Schweissstempeln eben nicht gleich.
Ich habe zum besseren Verständnis nochmal 3 Screenshots angehangen. Bei dem Makro wird ein Formular aufgerufen, wo ich für den Schweissstempel aus verschiedenen Menüs auswählen kann und diesen Stempel auf der Zeichnung dann einfügen.

Es geht im Grunde genommen um die Namensgebung für dieses skizzierte Symbol. Diese darf nicht fest sein, sondern muß , wenn schon Stempel eingefügt sind jeweils um 1 hochgezählt werden.
Also Schweissangaben , Schweissangaben1 , Schweissangaben2 u.s.w. !

Wie kann ich das realisieren bzw. wie kann ich abfragen, ob es schon ein Symbol mit diesem Namen in der Zeichnung gibt ?


Vielen Dank !

Tschüß Frank !

[Diese Nachricht wurde von melzig am 26. Jun. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 26. Jun. 2009 16:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für melzig 10 Unities + Antwort hilfreich

Hallo

Das ist nicht mit zwei Zeilen Code erledigt. Eine Idee wäre:
- Es wird ein Attribut "Laufnummer" (Typ Long) erstellt
- Jede neue Symboldefinition wird mit einem Attribut "Laufnummer" versehen und eingefügt.
- Vor dem Einfügen durchläuft dein Makro alle bereits vorhandenen skizzierten Symbole und sucht nach dem Attribut.
- Wird es gefunden, holt das Makro die Nummer aus dem Attribut.
- Findet es eine zweite Symboldefinition, vergleicht es die Nummer mit der eben geholten und behält die größere von beiden.
- Sind alle Symbole durchlaufen, wird die zwischengespeicherte Nummer um 1 erhöht und für das Attribut der neuen Symboldefinition und als Namenssuffix verwendet.
- Wird ein Symbol gelöscht, entsteht eine Lücke in der Nummerierung im Teilebrowser, was aber nur ein optisches Manko sein dürfte.

Wie gesagt, nicht in zwei Codezeilen, aber machbar.

------------------
MfG
RK

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz