Autor
|
Thema: Namensgebung aus Variablen und Text (593 mal gelesen)
|
Catialuder Mitglied Entwicklung
Beiträge: 90 Registriert: 20.09.2004
|
erstellt am: 13. Jun. 2006 13:10 <-- editieren / zitieren --> Unities abgeben:
Moin, ich versuche mich gerade etwas in die Makroprogrammierung einzufuchsen, deshalb bitte nicht hauen bei "unklaren Selbstverständlichkeiten" Aber zum Thema: über eine Inputbox kann der Benutzer die Nummer des zu erstellenden Bereiches eingeben. Es wird ein GeometricalSet erzeugt, welches umbenannt werden soll, z.B. in "Section 5" Wo und wie kann ich also den Namen aus einer Variablen und dem Standartext zusammen mischen. Im Moment kann ich entweder die Variable oder reinen Text anzeigen lassen. Bisher sieht es so aus:
Code:
Language="VBSCRIPT" Sub CATMain() CATIA.StatusBar = "Section erzeugen.CATScript" Dim Nr As String Nr = "" Nr = InputBox ("Nummer der Section", "Nummer Section", Nr) Dim HB1 As HybriedBodies Set HB1 = CATIA.ActiveDocument.Part.Hybridbodies.Item ("Design") Dim HStep As HybridBodies Set HStep = HB1.Hybridbodies Dim Section As HybridBody Set Section = HStep.Add Section.Name = Nr '------- oder eben "Section " End Sub
Vielen Dank für die Hilfe das Catialuder Und na klar, schön wäre es natürlich auch, wenn automatisch die letzte Nummer ausgelesen wird und dann ohne Benutzereingabe eine fortlaufende Nummerierung erfolgt. Aber ich wollte erst mal langsam anfangen. Was nicht heißen soll, dass ich nicht an der Lösung interessiert bin. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Catialuder Mitglied Entwicklung
Beiträge: 90 Registriert: 20.09.2004
|
erstellt am: 13. Jun. 2006 13:49 <-- editieren / zitieren --> Unities abgeben:
Ok, erste Antwort gerade durch Zufall gefunden. Veknüpen mit & Also Code:
Section.Name = "Section " & Nr
Allerdings scheint es so als könnte man mit 'Item' immer nur auf die ersten Ordner im Strukturbaum zugreifen. Wie kann ich ein GeometricalSet in einem GeometricalSet erzeugen, welches nicht in der ersten Hierarchie-Ebene des Strukturbaums liegt. In obigen Falle also innerhalb von Section 5? Danke und Gruß das Catialuder Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tapani. Mitglied
Beiträge: 56 Registriert: 12.05.2006
|
erstellt am: 13. Jun. 2006 18:14 <-- editieren / zitieren --> Unities abgeben: Nur für Catialuder
moin, ein HybridBody hat (zumindest ab R14) wieder eine HybridBodies-Collection, und die natürlich auch wieder ein Add. In Code-Form sähe das so aus (im leeren Part gestartet): Code: sub CATMain() set hybs1 = CATIA.ActiveDocument.Part.HybridBodies set hyb1 = hybs1.Add hyb1.Name = "stufe 1" set hybs2 = hybs1.Item(1).HybridBodies 'oder set hybs2 = hyb1.HybridBodies set hyb2 = hybs2.Add hyb2.Name = "stufe 2" msgbox CATIA.ActiveDocument.Part.HybridBodies.Item(1).HybridBodies.Item(1).Name end sub
und die Frage nach der automatischen Nummerierung: mit der Count-Property kriegt man raus wieviele Elemente es in der Collection gibt. Da braucht man dann nur eins aufaddieren und das ganze an den String anhängen. CU Tapani
------------------ Don't take life so seriously.... it's not a permanent condition Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Catialuder Mitglied Entwicklung
Beiträge: 90 Registriert: 20.09.2004
|
erstellt am: 14. Jun. 2006 10:22 <-- editieren / zitieren --> Unities abgeben:
Danke Tapani für die schnelle Antwort. Im Moment benutze ich das Buch von Ziethen, allerdings fällt mir der Einstieg doch noch recht schwer. Kann mir noch jemand verraten wo bzw. wie ich anfängertaugliche Syntaxhilfen finde? Wenn ich z.B. "Count" als Suchbefehl in der CATIA Doku benutze, bin ich mind. einen Tag mit verschiedenen (für mich unwichtigen) Artikeln beschäftigt. Im Buch taucht der Befehl bisher auch nur in einem anderen Zusammenhang auf, so dass ich mir nicht ableiten kann, wie ich z.B. die Anzahl der Geometrical Sets eines selektierten GeoSet. in einem String ausgeben kann. Ähnliches Problem habe ich mit dem einfügen eines GeoSet in einem selektierten Set. Was ist hierdran falsch? Code:
Dim USel As Selection Set USel = CATIA.ActiveDocument.SelectionDim HBs2 As HybridBodies Set HBs2 = USel Dim HB2 As HybridBody Set HB2 = HBs2.Add
Vielen Dank und Gruß das Catialuder Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 14. Jun. 2006 21:32 <-- editieren / zitieren --> Unities abgeben: Nur für Catialuder
Hallo Catialuder, zur Frage nach der Dokumentation von Befehlen auch von mir die immer wieder gegebene Antwort: die V5-Automation-Help. Zu Erreichen über die CATIA-Hilfe oder über den "Macros_Editor->Help" (Tools->Macro->Macros->Edit) oder über das Kontext-Menü von Einträgen im Object-Browser des Viual_Basic_Editor, falls Du mit Windows arbeitest und VBA installiert ist. Der Object-Browser kann Dir aber auch schon bei der Suche weiterhelfen, den gibts sowohl im Viual_Basic_Editor als auch im Macros_Editor. Zu Deinem Code: Der ist mir zu "minimalistisch", um Dir helfen zu können. Ich denke, schau Dir mal den "Object-Browser" an, der hilft Dir sicher weiter, welche Angaben die Befehle noch brauchen... Oder schaue in die Beispiele der V5-Automation-Hilfe... Du kannst natürlich auch den Code Deiner Problemstelle posten und dazu Fragen stellen, doch dann müssen zumindest die "Eingaben" besser zu erkennen sein. mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Catialuder Mitglied Entwicklung
Beiträge: 90 Registriert: 20.09.2004
|
erstellt am: 15. Jun. 2006 10:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Lusilnie, danke für den Tipp mit den Dokus. Leider scheint die Help, beim Start über Makros, hier nicht richtig eingerichtet zu sein. Ich öffne also wie gewohnt die Online-Doku und kann dann bei der Suche "Automation Documentation" auswählen. Allerdings erhalte ich dann immernoch eine sehr hohe Anzahl an (nicht hilfreichen) Seiten. Die Hilfeseiten des MS Visual Basic Editors sind da schon effizienter, auch wenn Beispiele etc. immer nur auf Tabellen u.ä. abgestimmmt sind. Das der Code zu "minimalistisch" ist, ist wohl auch das Problem, dass er nicht funktioniert . Ne ehrlich, ich hätte gedacht, die erste Zeile Sub CATMain() und End Sub kann ich beim posten auch weglassen. Ansonsten hoffte ich, mit sowenig Zeilen in dem GeoSet, das der Benutzer zuvor selektiert hat, ein neues GeoSet zu erzeugen. Also, was fehlt noch? Gruß das Catialuder Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tapani. Mitglied
Beiträge: 56 Registriert: 12.05.2006
|
erstellt am: 15. Jun. 2006 14:22 <-- editieren / zitieren --> Unities abgeben: Nur für Catialuder
moin, angenommen dein GeoSet ist selektiert, dann sollte folgendes funktionieren: Code: Dim USel As Selection Set USel = CATIA.ActiveDocument.Selection Dim HBs2 As HybridBodies Set HBs2 = USel.Item(1).ValueDim HB2 As HybridBody Set HB2 = HBs2.Add
, da in der Selection mehrere Objekte selektiert sein können, brauchst du das Item und da der Rückgabewert von Item "SelectedElement" ist noch das .Value, da das dir erst das selektierte Element zurück gibt. Eine Fußangel ist noch, dass wenn du in der Geometrieansicht Objekte selektierst, meist nur die BRep-Representation in der Selektion steht. Wenn man Objekte im Strukturbaum selektiert, passiert das nicht. Wenn man im Script selektieren läßt (Selection.SelectElement2...) kann man den zu wählenden Objekttyp explizit angeben. CU Tapani ------------------ Don't take life so seriously.... it's not a permanent condition Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Catialuder Mitglied Entwicklung
Beiträge: 90 Registriert: 20.09.2004
|
erstellt am: 15. Jun. 2006 18:13 <-- editieren / zitieren --> Unities abgeben:
Mal wieder Danke Tapani für die schnelle Antwort. Allerdings funktioniert Dein Code bei mir nicht. Ich habe ein neues, leeres Script mit Code:
Language = "VBSCRIPT" Sub CATMain() '...Dein Code End Sub erzeugt.
Er meckert immernoch in der Zeile Set HB2 = HBs2.Add Gruß Catialuder Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tapani. Mitglied
Beiträge: 56 Registriert: 12.05.2006
|
erstellt am: 16. Jun. 2006 09:50 <-- editieren / zitieren --> Unities abgeben: Nur für Catialuder
moin, das kommt davon, wenn man nicht jede Kleinigkeit testet vorm Posten :-) Es muß natürlich
Code: Language = "VBSCRIPT" Sub CATMain() Set USel = CATIA.ActiveDocument.Selection Set HBs2 = USel.Item(1).Value.HybridBodies Set HB2 = HBs2.Add End Sub
heissen! Und es muß immer noch ein GeoSet selektiert sein bevor das Makro ausgeführt wird.CU Tapani
------------------ Don't take life so seriously.... it's not a permanent condition Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Catialuder Mitglied Entwicklung
Beiträge: 90 Registriert: 20.09.2004
|
erstellt am: 16. Jun. 2006 11:16 <-- editieren / zitieren --> Unities abgeben:
|