Autor
|
Thema: CATIA V5 Makro Aufzeichnung (9720 mal gelesen)
|
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 25. Feb. 2011 11:45 <-- editieren / zitieren --> Unities abgeben:
Guten Tag, ich bin erst neu hier und find mich noch nicht ganz so zurecht, ich bitte das zu Berücksichtigen Also ich muss an der Uni ein Beleg über Makroprogrammierung mache. Genau genommen, eine Gelenkverbindung über "Userform"-Plattformen laufen lassen, inkl. Berechnung und Konstruktion. Ich habe ein neues part geöffnent -->Makroaufzeichnung gestartet -->ein einfachen Bolzen mit Fase gebaut-->Makroaufzeichnung gestoppt-->Quelltext gespeichert Diesen Quelltext habe ich auf einen einfachen Button als text gelegt. Jedoch wird nie ein Bauteil angezeigt, nach Drücken des Buttons. Ab und an bekomm ich eine Ebene oder sonstiges zu sehen, aber mehr nicht. Wo sind da die Problemzonen? Eigentlich ist es doch das einfachste. ein Bolzen mit Fase auf einen einfachen Button zu legen oder nicht? Kann mir vllt jmd helfen? Danke im vorraus. Mit freundlichen Grüßen Harle
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Ehrenmitglied V.I.P. h.c. IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000
|
erstellt am: 25. Feb. 2011 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
Hallo Harle, und herzlich willkommen auf CAD.de Ich vermute es kommt ein wenig darauf an, wie der Makrorecorder die Sachen aufzeichnet. In SolidWorks, das ich als CAD nutze, steht unter anderem der Teilname bei solchen Dingen manchmal mit darin, so dass man die aufgezeichneten Makros erst mal anpassen muss, um sie allgemeingültig auf andere Dokumente anwenden zu können. Vielleicht ist das bei CATIA V5 ja auch der Fall. Am besten fragst du im passenden Forumsbereich zu CATIA V5 noch mal nach, ich würde das Brett CATIA V5 Programmierung vorschlagen. Ciao, Stefan
------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 25. Feb. 2011 12:21 <-- editieren / zitieren --> Unities abgeben:
|
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 25. Feb. 2011 12:23 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
Hallo Harle und herzlich willkommen, also vorab, du bist im falschen Forum gelandet. Für CATIA vba etc. gibt es ein eigenes Forum siehe "CATIA V5 Programmierung". Zu deinem Anliegen kann ich nur sagen, dass es so wie du dir das vorstellst nicht geht. Die Makroaufzeichnung zeichnet nur bestimmte Dinge auf und nicht alles. Dassault hat hier absichtlich einiges beschnitten. Für viele Sachen reicht auch das VBA nicht mehr aus und man benötigt eine teure Lizenz für die CAA-Schnittstelle. Das was du da aufzeichnen wolltest, kann man auch nicht einfach per VBA abbilden, da man Features mit konkreter Parametrisierung nicht per VBA ansprechen kann. Demnach kannst du nicht einfach eine Skizze generieren und ein Feature z.B. Block daraus generieren. Für viele Dinge muss man im VBA Umwege gehen und z.B. mit Windowsmitteln Mausklicks/-bewegungen und Eingaben per Tastatur vorgaukeln. ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 25. Feb. 2011 12:29 <-- editieren / zitieren --> Unities abgeben:
Wir haben Makroprogrammierung an der Uni. Und wenn wir das ganz simpel runterrechnen, dann muss es gehen. Unser Professor, hat uns ein kleines Bauteil aufzeichnen lassen. Dann eine Userform erstellen lassen und den Quelltext in einem Button eingefügt. Das Bauteil wurde gebaut. Unser Beleg besteht nun darin mehrere bauteile zu konstruieren und über eine Userform halt ausrechnen und konstruieren zu lassen. Also das einfach die Bauteile dann aufgerufen werden. Die einzelnen Längen kann man ja mit Variabeln versehen. Es geht. Jedoch Funktioniert es grad bei mir nicht. Habe von einem Kommilitonen eine Grundstruktur bekommen, diese hat er @home gemacht. Liegt es vllt daran, dass diese Datei dann schwarz sein kann? Ansonsten weiß ich echt nicht weiter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Mitglied Teamleiter
Beiträge: 825 Registriert: 26.01.2006
|
erstellt am: 25. Feb. 2011 12:30 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Feb. 2011 12:38 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
Servus Fülle bitte deine Systemninfo aus. IMHO ist die Makroaufzeichnung maximal dafür sinnvoll, eine grobe Struktur aufzuzeichnen. Der Code sollte immer nach gebessert und vereinfacht (und ganz wichtig: verstanden) werden. Kannst du dienen Code mal posten, oder erklären was du vorhast? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 25. Feb. 2011 12:44 <-- editieren / zitieren --> Unities abgeben:
Hey, also Ziel ist es ein beleg anzufertigen, der durch verschiedene Angaben von Kräften etc. Eine Gelenkverbindung dimensioniert. Wo halt alle Sicherheiten passen. Das Produkt besteht aus den Teilen Bolzen, Gabel und Stange sowie Sekundärbauteile wie Unterlegscheibe und Buchse. Die Berechung ist fertig. Und diese entstanden Werte, kann man ja den Bauteilen zuweisen. Diese müssen wie du schon sagtest jedoch vorkonstruiert werden. Jedenfalls in unserem kurs haben wir noch nicht ohne Aufzeichnung Bauteile konstruiert. Also alles lief über eine Aufzeichnung. Bei den damaligen ersten Versuchen hat dies funktioniert. Nur irgendwie funktioniert das nicht mehr. Es wird das Bauteil nicht mehr angezeigt. Ich habe im VBA mehrere Projekte offen, kann es vllt sein, das bei der Makroaufzeichnung ein falsches Projekt zugewiesen wurde und somit vllt Probleme bei der Verlinkung entstanden sind? Ist nur eine Vermutung.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 25. Feb. 2011 12:47 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Feb. 2011 12:52 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
Servus Müsst ihr unbedingt ein Makro für den Aufbau der Teile verwenden? Für mich hört sich das eher nach der Verwendung einer Konstruktionstabelle und weiteren Regeln an. Über eine Userform könnte man ggf noch die richtige "Baugröße" der Gelenkverbindung wählen (um auch ein Makro verwendet zu haben ) Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 25. Feb. 2011 12:55 <-- editieren / zitieren --> Unities abgeben:
Ne sollen das über Makros machen. Müssen nicht unbedingt Aufzeichnungen nutzen. Wenn wir es voll drauf haben, könnten wir die Bauteile auch über VBA halt direkt konstruieren ^^ aber wer kann das schon, wenn man nicht die Erfahrung hat. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 25. Feb. 2011 13:29 <-- editieren / zitieren --> Unities abgeben:
|
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 25. Feb. 2011 13:36 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
Hallo nochmal, sorry ich kann dir nicht helfen, da sich das für mich nach einem ganz klar anderen Verfahren anhört und nicht nach reiner Makroprogrammierung oder ihr habt tatsächlich mit CAA gearbeitet, wobei ich selbst keinen direkten Bezug darauf habe, weil die Lizenz uns einfach zu teuer ist. Für mich hört sich das vielmehr nach Powercopy oder automatisieretes Konstruieren mit parametrisierten Templates an. Ich würde an deiner Stelle mal mit dem Prof oder anderen reden. Vll. ist da nur etwas falsch rüber gekommen. In meinen Augen ist das, was du da machen möchtest/sollst, mit normalem VBA nicht möglich. ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 25. Feb. 2011 13:40 <-- editieren / zitieren --> Unities abgeben:
Doch es ist möglich. Ich glaube wir reden aneinander vorbei. Die Gelenkverbindung ist ja nicht groß aufwendig. Zum Beispiel: Starte ich eine Makroaufzeichnung und konstruiere mit einer Skizze und einem Block einen Bolzen. en Dieser Quelltext kann einem Button im VBA doch zugewiesen werden. So und Nun sollte jedesmal dieser Bolzen aufgerufen werden. Da im Quelltext auch der Kreisdurchmesser und Länge steht, kann man dies mit 2 einfachen Variablen versehen und nun im VBA auswählen. Das wär das einfachste Prinzip. Kann damit einer umgehen?? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 25. Feb. 2011 13:47 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
|
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 25. Feb. 2011 13:52 <-- editieren / zitieren --> Unities abgeben:
|
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 25. Feb. 2011 15:12 <-- editieren / zitieren --> Unities abgeben:
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 25. Feb. 2011 16:01 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
Hallo, also ich kann mit VBA und CAA dienen. :-D Rick ist im VBA aber fitter als ich und von daher vertraue ich seinem Urteil. Ich glaube deine Fehlerbeschreibung ist einfach zu schwammig. Ich vermute mal dein Problem ist, dass kein VBA-Modul installiert ist, oder etwas in der Art und VBA daher auf deinem Rechner grundsätzlich nicht funktioniert. Daher würde ich Dich bitten noch einmal detailiert aufzuführen, was Du genau probierst und was passiert. Denn einen Klotz aufzuzeichen geht immer ohne Probleme, wie Rick es bereits beschrieben hat. Also Aufzeichnung starten, Klotz bauen (Skizze + Pad), Aufzeichnung beenden und dann über Alt+F8 ausführen. Also sag noch einmal genau an, was Fase ist. Im übrigen ist es ja scheinbar deine Belegarbeit und es wäre auch unfair, wenn wir die ganze Arbeit machen. :-) Dein Dozent wird Dir aber sicher alle Hilfsmittel an die Hand gegeben haben. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 25. Feb. 2011 16:17 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
Danke Henry Also nochmal Klartext, da ich doch immer versuche allen zu Helfen... Um ehrlich zu sein, habe ich nichts mehr geschrieben, da es mir etwas zu .... wurde. Du bist nicht mal in der Lage detailliert zu schreiben was du suchst.Geschweige denn eine Systeminfo Hardware + Software etc. anzugeben. Erst hast du geschrieben, dass du etwas aufgezeichnet hast und das nicht lief und wolltest wissen wie es geht. Nun willst du wissen, wie man über eine Userform programmiert, was eh mehr Fragen als Antworten aufwirft und dann stellst du mich noch da, als hätte ich keine Ahnung davon... Les dir bitte den Quatsch, den du da geschrieben hast noch mal durch und schreibe eine vernünftige Antwort. Sorry für den rauen Ton, aber manchmal regt mich zu erkennender fehlender Ergeiz einfach auf und um ehrlich zu sein, möchtest du etwas von uns und nicht umgekehrt. Was genau hast du vor? Möchtest du eine Form entwickeln, bei der man gewisse Parameter eintragen kann und dann per Button das Makro befüttert mit den Parametern ausführen soll? So würde ich die letzte Aussage zumindest deuten. Allerdings ist es mir zu blöd alles deuten zu müssen. ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 27. Feb. 2011 20:16 <-- editieren / zitieren --> Unities abgeben:
Hey ho, ich glaube durch die vielen unterschiedlichen Antworten ist bei einigen auch der PFaden verloren gegangen. Aufgabe des Beleges: Eine in VBA programmierte Belegarbeit, die zum einen Festigkeitsnachweise einer Gelenkverbindung mit variablen Parametern ausrechnet und demnach dann diese Gelenkverbindung (bestehend aus Bolzen, Gabel, Stange, Buchse oder Stift) konstruiert bzw dann als Product im CATIA V5 aufruft. Ich habe mit CATIA V5 R19. VBA Version 6.5. Hochschulrechner sind auf den modernsten Standard, kann aber jetzt nicht genau sagen welches System. Denke Core 2 Duo. Windows 7 als Betriebssystem und mindestens 2GB Ram würd ich annehmen. Ansonsten würd ich da auf alle Fälle noch mal nachschauen wenn Bedarf besteht. Die Berechnung und alles wurde über Userform gestaltet, siehe Bild 1. Sobald die Sicherheiten gegeben sind, sollen die einzelnen Bauteile aufgerufen werden können und als gesamtes Product, siehe Bild 2 Als wir mit der Makroprogrammierung anfingen, haben wir auch ein einfaches Bauteil konstruiert und aufgezeichnet und es hat auch geklappt über einen Button auf der Userform aufzurufen. Nur irgendwie funktioniert es jetzt nicht mehr. Und deshalb verzweifle ich. Die Bauteile wurden alle schon aufgezeichnet etc und ich denke vllt das es ein simples Problem ist, welches ich nicht finde. Da ich aber nicht sinnlos Quelltexte durchschicken wollte, bat ich erstmal um Hilfe. Um dann natürlich die nötigen Informationen liefern zu können. Das Problem macht sich wie folgt bemerkbar. Nach der Berechnung, werden Ergebnisse angezeigt und das Konstruktionsfenster aufgerufen. Sobald nun der Bolzen-Button betätigt wird. Öffnet sich eine neue Part-Datei. In dieser Datei ist aber entweder kein Bauteil zu sehen, oder unter Umständen plötzlich nur Fasen mit einem "Ausrufezeichen" versehen. Ist es denn jetzt vllt verständlicher? oder braucht ihr noch ein paar Infos?? Danke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 27. Feb. 2011 20:31 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
Servus Bist du sicher dass das richtige Script durch den Button aufgerufen wird? Hast du mal das aufgezeichnete Makro mal versuch zu "lesen", mach das Script sinn? Sind die gleichen Anfangsbedingungen wie bei der Aufzeichnung des Scripts gegeben (zB Part geöffnet, ..)? Kannst du den Code zB für den Bolzen mal Posten? Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 27. Feb. 2011 21:17 <-- editieren / zitieren --> Unities abgeben:
Ob der Code Sinn macht, weiß ich nicht, das ist das Problem bei sowas Neuem, ich gehe damit um aber jedes einzelne Wort kann ich nicht entziffern. Hier mal die wichtigen Texte: ------------------------------------------------------------------------------------------------ '========Button - Bolzen konstruieren Private Sub CommandButton5_Click() On Error Resume Next For I = 1 To 10 CATIA.ActiveDocument.Close Next Call Einspannsituation_lesen 'Parameter werden eingelesen If b_type = 1 Then NameBolzen = "Bolzen_ISO2340-B-" + Str(d1N) + "h11x" + Str(LN) + "x" + Str(LS1) + "-St" If b_type = 2 Then NameBolzen = "Bolzen_ISO2340-A-" + Str(d1N) + "h11x" + Str(LN) + "-St" Call Neues_Part Call Bolzen Call Fase_Bolzen If b_type = 1 Then Call Splintbohrung Speicherpfad = saveInBox.Text + "\" + NameBolzen + ".CATPart" Name = NameBolzen Call Name_Part Call Einpassen_Zentrieren Call Part_Speichern 'Ein- / Ausblenden von Command-Buttons If b_type = 1 Then CommandButton15.Enabled = True If b_type = 2 Then CommandButton16.Enabled = True CommandButton5.Enabled = False End Sub --------------------------------------------------------------------------------------------- Private Sub Bolzen() Dim partDocument1 As Document Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim hybridBodies1 As HybridBodies Set hybridBodies1 = part1.HybridBodies Dim hybridBody1 As HybridBody Set hybridBody1 = hybridBodies1.Item("Geometrisches Set.1") Dim sketches1 As Sketches Set sketches1 = hybridBody1.HybridSketches Dim originElements1 As OriginElements Set originElements1 = part1.OriginElements Dim reference1 As Reference Set reference1 = originElements1.PlaneYZ Dim sketch1 As Sketch Set sketch1 = sketches1.Add(reference1) Dim arrayOfVariantOfDouble1(8) arrayOfVariantOfDouble1(0) = 0# arrayOfVariantOfDouble1(1) = 0# arrayOfVariantOfDouble1(2) = 0# arrayOfVariantOfDouble1(3) = 0# arrayOfVariantOfDouble1(4) = 1# arrayOfVariantOfDouble1(5) = 0# arrayOfVariantOfDouble1(6) = 0# arrayOfVariantOfDouble1(7) = 0# arrayOfVariantOfDouble1(8) = 1# Set sketch1Variant = sketch1 sketch1Variant.SetAbsoluteAxisData arrayOfVariantOfDouble1 part1.InWorkObject = sketch1 Dim factory2D1 As Factory2D Set factory2D1 = sketch1.OpenEdition() Dim geometricElements1 As GeometricElements Set geometricElements1 = sketch1.GeometricElements Dim axis2D1 As Axis2D Set axis2D1 = geometricElements1.Item("Absolute Achse") Dim line2D1 As Line2D Set line2D1 = axis2D1.GetItem("H-Richtung") Dim line2D2 As Line2D Set line2D2 = axis2D1.GetItem("V-Richtung") Dim circle2D1 As Circle2D Set circle2D1 = factory2D1.CreateClosedCircle(0#, 0#, d1N / 2) Dim point2D1 As Point2D Set point2D1 = axis2D1.GetItem("Ursprung") circle2D1.CenterPoint = point2D1 Dim point2D2 As Point2D Set point2D2 = factory2D1.CreatePoint(d1N / 2, 0#) Dim constraints1 As Constraints Set constraints1 = sketch1.Constraints Dim reference2 As Reference Set reference2 = part1.CreateReferenceFromObject(circle2D1) Dim reference3 As Reference Set reference3 = part1.CreateReferenceFromObject(point2D2) Dim constraint1 As Constraint Set constraint1 = constraints1.AddBiEltCst(catCstTypeOn, reference2, reference3) constraint1.Mode = catCstModeDrivingDimension Dim reference4 As Reference Set reference4 = part1.CreateReferenceFromObject(point2D2) Dim reference5 As Reference Set reference5 = part1.CreateReferenceFromObject(line2D1) Dim constraint2 As Constraint Set constraint2 = constraints1.AddBiEltCst(catCstTypeOn, reference4, reference5) constraint2.Mode = catCstModeDrivingDimension Dim reference6 As Reference Set reference6 = part1.CreateReferenceFromObject(circle2D1) Dim constraint3 As Constraint Set constraint3 = constraints1.AddMonoEltCst(catCstTypeRadius, reference6) constraint3.Mode = catCstModeDrivingDimension Dim length1 As Length Set length1 = constraint3.Dimension length1.Value = d1N / 2 sketch1.CloseEdition part1.InWorkObject = hybridBody1 part1.Update Dim bodies1 As Bodies Set bodies1 = part1.Bodies Dim body1 As Body Set body1 = bodies1.Item("Hauptkörper") part1.InWorkObject = body1 part1.InWorkObject = body1 Dim shapeFactory1 As ShapeFactory Set shapeFactory1 = part1.ShapeFactory Dim pad1 As Pad Set pad1 = shapeFactory1.AddNewPad(sketch1, LN / 2) pad1.IsSymmetric = True Dim limit1 As Limit Set limit1 = pad1.FirstLimit Dim length2 As Length Set length2 = limit1.Dimension length2.Value = LN / 2 part1.Update End Sub ------------------------------------------------------------------------------- Private Sub Fase_Bolzen() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim shapeFactory1 As ShapeFactory Set shapeFactory1 = part1.ShapeFactory Dim reference1 As Reference Set reference1 = part1.CreateReferenceFromName("") Dim chamfer1 As Chamfer Set chamfer1 = shapeFactory1.AddNewChamfer(reference1, catTangencyChamfer, catLengthAngleChamfer, catNoReverseChamfer, 1#, 45#) Dim bodies1 As Bodies Set bodies1 = part1.Bodies Dim body1 As Body Set body1 = bodies1.Item("Hauptkörper") Dim shapes1 As Shapes Set shapes1 = body1.Shapes Dim pad1 As Pad Set pad1 = shapes1.Item("Block.1") Dim reference2 As Reference Set reference2 = part1.CreateReferenceFromBRepName("RSur Face Brp Pad.1;2);None );Cf11 ));WithTemporaryBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", pad1) chamfer1.AddElementToChamfer reference2 chamfer1.Mode = catLengthAngleChamfer chamfer1.Propagation = catTangencyChamfer chamfer1.Orientation = catNoReverseChamfer Dim reference3 As Reference Set reference3 = part1.CreateReferenceFromName("") Dim chamfer2 As Chamfer Set chamfer2 = shapeFactory1.AddNewChamfer(reference3, catTangencyChamfer, catLengthAngleChamfer, catNoReverseChamfer, 1#, 45#) Dim reference4 As Reference Set reference4 = part1.CreateReferenceFromBRepName("RSur Face Brp Pad.1;1);None );Cf11 ));WithTemporaryBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", chamfer1) chamfer2.AddElementToChamfer reference4 chamfer2.Mode = catLengthAngleChamfer chamfer2.Propagation = catTangencyChamfer chamfer2.Orientation = catNoReverseChamfer part1.Update End Sub ------------------------------------------------------------------ Private Sub Name_Part() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim product1 As Product Set product1 = partDocument1.GetItem("Part1") product1.PartNumber = Name End Sub ------------------------------------------------------- Private Sub Neues_Part() On Error Resume Next CATIA.ActiveDocument.Close Dim Neu As Document Set Neu = CATIA.Documents.Add("Part") End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 27. Feb. 2011 22:39 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
Servus Beim groben überfliegen ist mir aufgefallen, dass du mit "on error resume next" die Fehlerbehandlung ausgeschaltet hast. AFAIK bleibt diese Einstellung auch in andern Subs erhalten. Somit hast du keine Möglichkeit dir Fehlermeldung anzeigen zulassen und darauf zu reagieren. Lösche mal diese Zeile und schau dir mögliche Fehler und derer Ursache an (zB mit dem Wachfenster bzw. das Makro Schrittweise abarbeiten) Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 28. Feb. 2011 10:13 <-- editieren / zitieren --> Unities abgeben:
Hey, ich kann mir das nicht erklären.. Aber nun geht es doch. Ich habe einfach mal ON Error Resume next ausgeblendet --> funktionierte nicht. Dann habe ich es wieder eingeblendet --> plötzlich funktionierte alles wie es sollte und das obwohl ich nichts verändert habe und seit 2 Wochen dran sitze. Ich versteh es einfach nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 28. Feb. 2011 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
Servus Wenn es ohne "on error resume next" nicht funktioniert solltest du die Fehler untersuchen und beheben. Einfach darauf verlassen dass es jetzt läuft (ohne eine Erklärung zu haben) ist gefährlich. Was ist beim nächsten Start oder einem andern Rechner? Läuft es dann (speziell bei der Vorstellung des Skript gegenüber dem Prof)? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 28. Feb. 2011 10:46 <-- editieren / zitieren --> Unities abgeben:
Also es geht auch ohne "On Error Resume Next". Er hatte lediglich ActivDocument.Close angemeckert, weil es nichts zu Schließen gab. Hmmm habe vorher bei Tools-->Optionen-->Infrastruktur-->Teileinfrastruktur-->Teiledokumente--> Häkchen bei geometrisches Set erzeugen Danach hat es immer noch nicht funktioniert. Aber nach einem Neustart. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 28. Feb. 2011 10:58 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
Servus Also war die veränderte Ausgangssituation der Übeltäter. Was wirft aber folgende Fragen auf: - was passiert wenn diese Einstellung (des GeoSets) auf einem anderen Rechner nicht gestzt wurde? - wird das GeoSet überhaupt benötigt? - was ist wenn jemand Englisch als Sprache in CATIA eingeteilt hat - was passiert wenn am Anfang mehr als 10 Dokumente geöffnet sind (im speziellen wenn eins schon Part1 heißt)? - .... IMHO solltest du das Script durcharbeiten (und verstehen) um solche möglichen Probleme zu bereinigen. Das "Zusammenbasteln" eines Scripte geht oft recht schnell, doch das Testen und das Abfangen aller möglicher Fehler nimmt sehr viel Zeit in Anspruch. Gruß Bernd PS: Bitte Systeminfo ausfüllen. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 28. Feb. 2011 11:14 <-- editieren / zitieren --> Unities abgeben:
Hey, also die Probleme gehen weiter. Wenn ich den Bolzen offen lassen und danach die Gabel und Stange aufrufe, kommt es zu Problemen bei den Fasen bzw Rundungen, da diese immer mit Fase.1 bezeichnet werden. Wenn ich bei den einzelnen Bauteilen vorher immer alle Dokumente Schließen lasse, kommen keine Probleme. Will ich sie aber offen lassen, hat er Probleme mit dem Bezugselement in diesen Zeilen Bsp: Stange Fasenverundung Set length1 = parameters1.Item("Part1\Hauptkörper\Fase.1\Fasenband.1\Länge1") Kann ich das Problem auch anders lösen ohne die Dokumente Schließen zu müssen.?? Die Probleme wegen den offenen Parts, die mein Vorredner erwähnt hat wüsste ich auf anhieb nicht, wie ich dem Programm mitteilen kann, wie er alle offenen Schließen kann ausser in der Form einer Schleife. Habe diese erstmal auf 10 gesetzt. Kann mir da vllt einer weiterhelfen?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 28. Feb. 2011 20:12 <-- editieren / zitieren --> Unities abgeben: Nur für HarleKinX
Servus Die Anzahl der offenen Dokumente bekommst du über: Catia.documents.count Ob es sinnvoll ist über einer Schleife alle offenen Dokument zu schließen kann man streiten. Das Problem bei aufgezeichneten Makros ist immer, dass alle Features/Parameter mit Namen angesprochen werden. Deshalb fällt dein Makro auf die "Nase", da deine Stange ja nicht "Part1" heißt (Pfad des Parameters). IMHO wäre die einfachste/sauberste Lösung: ein Produkt mit allen Einzelteilen aufbauen und diese "Vorlage" beim Start öffnen. Die Geometrie könnte dann über Parameter in der Baugruppe gesteuert werden. Diese Parameter könnten dann mit deinem VBA-Makro angepasst werden. Gruß Bernd PS: Bitte Systeminfo ausfüllen. PS2: kleiner Hinweis für weitere Probleme: die Forensuche oder die Doku sind oft sehr hilfreich ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HarleKinX Mitglied Student
Beiträge: 32 Registriert: 20.02.2011 Intel Core 2 Duo, 3Gb Ram Graka: Win XP Pro SP3 CATIA V5 R19 SP8
|
erstellt am: 01. Mrz. 2011 09:18 <-- editieren / zitieren --> Unities abgeben:
Ja die Idee wäre wirklich besser mit dem gesamten Product. Jedoch wäre dies jetzt zu Zeitaufwendig. Unser Prof hatte uns ja den Weg über die Makroaufzeichnung gezeigt. Denke die Aufgabe ist somit auch erfüllt. Weiterhin weiß ich aber nicht wie ich die offenen Dokumente anders schließen kann. Aber im Moment ist es die einzige Möglichkeit das Programm ohne Fehler laufen zu lassen. Vllt hat ja jmd da eine bessere Idee ? Ansonsten bedanke ich mich für eure Mühen und Hilfe.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |