Autor
|
Thema: Part deaktivieren (2423 mal gelesen)
|
Tunki Mitglied tech. Sachbearbeiter; Ausleger; Konstrukteur ; Key-User
Beiträge: 204 Registriert: 23.05.2007
|
erstellt am: 22. Mai. 2008 15:22 <-- editieren / zitieren --> Unities abgeben:
Guten Tag, Gibt es eine möglichkeit Parts (Normteile) in ein Produkt,mithilfe von Rule oder Parametern oder einer Konstruktionstabelle, zu laden? Wenn das nicht funktioniert, kann ich Parts die in meinem Produkt sind Löschen oder im notfall wenigstens zu deaktivieren. Bin über jede Hilfe froh mit freundlichen Grüßen Knut ------------------ Das wird schon CLICK OK TO TERMINATE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mörchen Ehrenmitglied V.I.P. h.c. CAD-Trainerin (CATIA V5)
Beiträge: 3830 Registriert: 14.03.2007 Release 19 SP2
|
erstellt am: 22. Mai. 2008 15:40 <-- editieren / zitieren --> Unities abgeben: Nur für Tunki
Hallo Knut: Du brauchst einen neuen Parameter Typ boolean, den Du wahr oder falsch (true/false) schalten kannst. Also gehe in den Formeleditor, stelle hinter der Schaltfläche "neuer Parameter des Typs" Boolean oder in deutsch:"Boolescher Wert“ ein und drücke auf die Schaltfläche. Nun das Fenster mit ok schließen und oben im Baum sollte ein Knoten erscheinen, der "Parameter" heißt unter diesem Knoten findest Du Deinen selbsterzeugten Parameter. Nun verknüpfst Du im Produkt mit einer Formel den "Aktivierungsstatus der Komponente" (oder so ähnlich) mit diesem Parameter. Part1/Aktivierungsstatus der Komponente=selbsterzeugter boolscher Parameter Gruß Mörchen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tunki Mitglied tech. Sachbearbeiter; Ausleger; Konstrukteur ; Key-User
Beiträge: 204 Registriert: 23.05.2007
|
erstellt am: 26. Mai. 2008 12:32 <-- editieren / zitieren --> Unities abgeben:
|
Mörchen Ehrenmitglied V.I.P. h.c. CAD-Trainerin (CATIA V5)
Beiträge: 3830 Registriert: 14.03.2007 Release 19 SP2
|
erstellt am: 26. Mai. 2008 13:16 <-- editieren / zitieren --> Unities abgeben: Nur für Tunki
Hallo Tunki, das funktioniert auch mit Constraints. Du musst nur den Parameter suchen, der die Aktivität der Constraints steuert. Am besten filterst Du oben im Formeleditor nach boolean. Ich hab grad kein CATIA laufen und weiß nicht, wie der Parameter genau heißt. (Vermutlich Constraints\Kongruenz.x\Aktivity oder so ähnlich) Gruß Mörchen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tunki Mitglied tech. Sachbearbeiter; Ausleger; Konstrukteur ; Key-User
Beiträge: 204 Registriert: 23.05.2007
|
erstellt am: 26. Mai. 2008 13:21 <-- editieren / zitieren --> Unities abgeben:
Soweit habe ich das ja auch ich weiß auch wie das den haeißt, aber die blöde Katja macht das nicht der sagt, das darin ein fehler ist. Sich schließe daraus, das du auch nicht genau weißt woran es liegt. dir/euch das hilft, könnte ich auch ein bildchen davon machen, bzw meinen eingabetext online stellen. ------------------ Das wird schon CLICK OK TO TERMINATE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mörchen Ehrenmitglied V.I.P. h.c. CAD-Trainerin (CATIA V5)
Beiträge: 3830 Registriert: 14.03.2007 Release 19 SP2
|
erstellt am: 26. Mai. 2008 19:33 <-- editieren / zitieren --> Unities abgeben: Nur für Tunki
|
Meggie275 Mitglied Konstrukteurin
Beiträge: 12 Registriert: 24.04.2008 CATIA V5 Rel.18 auf Windows
|
erstellt am: 30. Mai. 2008 11:18 <-- editieren / zitieren --> Unities abgeben: Nur für Tunki
Hallo Tunki, ich habe in einem meiner Templates eine Reaction geschrieben, die auf eine Parameteränderung z.B. der Länge reagiert. Über eine If/then Abfrage weise ich dann dieser Länge ein bestimmtes Part zu und übergebe den Pfad plus den Dateinamen an ein Makro mit Argumenten in meiner Baugruppe. Dieses lädt dann das entsprechende Part. Das funktioniert aber nur mir lokal abgelegten Parts. Aber vielleicht hilft Dir das ja... Beispiel aus Code in Reaction: If länge== 100 then { `Beziehungen\VB-Scripte.1\Script1`.Run("C:\Daten\3-580-19-9942.CATPart") } else... Code aus Vbscript: Dim myprod 'As Product Dim currentprod 'As Product Dim currentprods 'As Products Dim PartDoc 'As Product Set myprod = CATIA.ActiveDocument.Product Set PartDoc = myprod.Products.Item("Fuss.1") Set currentprods = myprod.Products Set Nothing1 = currentprods.ReplaceComponent(PartDoc, file, False) End Sub Solltest Du mehrere Unterprodukte durchsuchen muessen, muesste da noch eine Schleife fuer das Durchsuchen rein. Gruss, Meggie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tunki Mitglied tech. Sachbearbeiter; Ausleger; Konstrukteur ; Key-User
Beiträge: 204 Registriert: 23.05.2007
|
erstellt am: 30. Mai. 2008 11:27 <-- editieren / zitieren --> Unities abgeben:
@ Mörchen, das Problem habe ich jetzt schon alleine mit viel Probieren in den Griff bekommen, zumindest das deaktivieren. @ Meggie, das ist eine Geniale Idee, allerdings habe ich nicht die möglichkeiten die Daten Lokal zu speichern. bzw. erfüllt es dann später nicht den Sinn, weil da später auch andere Mitarbeiter arbeiten sollen.
------------------ mit freundlichen Grüßen Knut Das wird schon CLICK OK TO TERMINATE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kuksi Mitglied
Beiträge: 6 Registriert: 06.08.2008
|
erstellt am: 06. Aug. 2008 13:52 <-- editieren / zitieren --> Unities abgeben: Nur für Tunki
Hallo! ich möchte gerade das auch, in einer parameter methodik, umsetzen. Also nicht das laden eines Parts, aber das laden eines Macros aus einer Reaction. ich habe jedoch das problem das in meinem Strukturbaum in CATIA das VB Script nicht unter Beziehungen abgebildet ist. Mein Plan ist eine Reaction zu schreiben die mit Macro1.Run() bei Änderung eines Parameters das jeweilige Macro aufruft und ausführt. Ich habe da jedoch das Problem das ich das Macro nicht korrekt anspreche, bzw. ich es nicht unter Beziehungen finde. Wie muss ich das (VB Script) korrekt ansprechen, Syntax? Nächste Frage: ich habe auch gesehn das man parameter übergeben kann, Kann ich da auch zum Beispiel den Namen des Parts indem das Macro ausgeführt werden soll übergeben? Ich stelle mir das so vor: Das Macro greift direkt auf eine Skizze zu. So wie ich das Verstanden habe können nur VBA Scripte auf ein geometrisches Element in einer Skizze zugreifen. Dabei muss ich aber immer auch den genauen Namen des Parts angeben in dem diese Skizze und damit das geometrische Element das ich manipulieren möchte zu finden ist. Dies möchte ich eben als Parameter in das Macro übergeben und damit ausführen. Oder kennt jemand einen besseren, einfacheren Weg? Vorab besten danke für die Antworten! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 06. Aug. 2008 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für Tunki
Sorry, dass ich dir nicht viel weiter helfen kann, aber ich habe gehört, dass man wohl Scripte über Knowledgeware ausführen kann. Zu dem Parameter: Natürlich kannst du im CATIA einen Parameter anlegen, den das Script dann auslesen kann, aber direkt an ein Programm einen Parameter übergeben geht nur, wenn in der Main() dann auch Variablen definiert sind sprich Main(byVal args()), so wie es in C++ der Standard ist. Ansonsten kannst du auch Umgebungsvariablen setzen, die das Script dann auslesen kann, oder über eine Selection das entsprechende part abfragen. ------------------ 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 |
Kuksi Mitglied
Beiträge: 6 Registriert: 06.08.2008
|
erstellt am: 06. Aug. 2008 16:58 <-- editieren / zitieren --> Unities abgeben: Nur für Tunki
Danke für die rasche Antwort! Ich hab auch schon einen Ansatz für das Problem gefunden. Zunächst habe ich eine Reaction erstellt: Reaction: Source ist ein Parameter (Part1\Paramter\Number) wenn dieser den Wert ändert wird folgendes Script ausgeführt:
{ `Relations\VB Scripts.1\VB Script.1` .Run(`Part1\Part Number` ) }
Daraufhin wird das VB Script.1 mit dem Übergabewert Part Number (= PartName) ausgeführt.
'------ Initiation ------ Dim oDocs Dim oPartDoc Dim oPart Set oDocs = CATIA.Documents '---- search the right part --- dim select1 dim Name dim temp set select1 = CATIA.ActiveDocument.Selection select1.clear temp = ".Part.Name=" & PartName & ",all" Select1.Search (temp) Name = select1.item(1).Value.Parent.Name '---- End Search ---- Set oPartDoc = oDocs.Item(Name) Set oPart = oPartDoc.Part Dim Params Set Params = oPart.Parameters Dim HybBodies Set HybBodies = oPart.HybridBodies Dim HybBody Set HybBody = HybBodies.Item("CHBolts") Dim SksCH Set SksCH = HybBody.HybridSketches Dim SkCH Set SkCH = SksCH.Item("Sketch.1") Dim WzK Set WzK = SkCH.OpenEdition Dim GeoEleCH Set GeoEleCH = SkCH.GeometricElements '------ End ------ '------ Set Graphical Elements ------- '-- Dim Cylinderhead bolts -- Dim PCH_B_1, PCH_B_2 Set PCH_B_1 = GeoEleCH.Item("Point.1") Set PCH_B_2 = GeoEleCH.Item("Point.2") If Params.Item("CH_Bolt_NUM").ValueAsString = "1" Then PCH_B_1.Construction = false PCH_B_2.Construction = true
elseIf Params.Item("CH_Bolt_NUM").ValueAsString = "2" Then PCH_B_1.Construction = false PCH_B_2.Construction = false
End If oPart.InWorkObject = HybBody SkCH.CloseEdition
End Sub
jedoch funktioniert `Part1\Part Number` nicht. Hier wird zwar der Wert Part1 übergeben, jedoch akzeptiert das VB Script die Eingabe nicht. Der Fehler tritt in der Zeile temp = ".Part.Name=" & PartName & ",all" auf. Vielleicht weißt du eine Antwort darauf... Danke! [Diese Nachricht wurde von Kuksi am 06. Aug. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 06. Aug. 2008 19:05 <-- editieren / zitieren --> Unities abgeben: Nur für Tunki
wow, das Script finde ich doch mal ne gute Idee. Kannste mir bitte den Fehlercode oder die Fehlermeldung mal sagen? Ich denke aber auch, dass es am Parameternamen liegt. Edit: versuch mal: temp = "CATPrtSearch.PartFeature.Name=" & PartName & ",all" wenn wirklich Part1 im PartName drin steht funktioniert es bei mir. ------------------ 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 [Diese Nachricht wurde von HoBLila am 06. Aug. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kuksi Mitglied
Beiträge: 6 Registriert: 06.08.2008
|
erstellt am: 06. Aug. 2008 23:13 <-- editieren / zitieren --> Unities abgeben: Nur für Tunki
Hey! Danke für das Lob ; ) hört man gern. Ich hab die Fehlermeldung angefügt.
Das Problem besteht leider weiterhin. Wenn ich beim Aufrufen des Makros in der Reaction anstelle von .Run (`Part1\Part Number`) .Run("Part1") eingebe funktioniert es. Ich habe es so verstanden das `Part1\Part Number` ein Parameter ist der die Teilenummer angibt auch wenn diese sich ändert ( was damit abgedeckt werden soll). Die Ausgabe des Parameters in einer msgbox gibt mir den korrekten wert wieder, jedoch kann ich in der Reaction nicht prüfen, welchen Typ der Wert hat (String...). ich denke das hier der Fehler liegt. es wird nicht der richtige typ übergeben. besten Dank! lg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 07. Aug. 2008 08:25 <-- editieren / zitieren --> Unities abgeben: Nur für Tunki
hm... versuch mal ein TypeCast mit cStr(PartName) bzw. könnte es uach sein, dass das Makro versucht, den Parameter und die Strings an das temp-Objekt zu übergeben Dim temp as String könnte da helfen ------------------ 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 |
Kuksi Mitglied
Beiträge: 6 Registriert: 06.08.2008
|
erstellt am: 08. Aug. 2008 11:40 <-- editieren / zitieren --> Unities abgeben: Nur für Tunki
Hey! Ich hab eine Lösung gefunden. Die Konvertierung im VB Script (cStr()) hat leider nicht funktioniert, scheinbar kann VB den Typ der Übergeben wurde nicht konvertieren. (Fehler: Methode wird nicht unterstützt) Ich habe es jetz so umgesetzt das ich zunächst mit let.... in der Reaction eine Variable vom Typ String erstelle und dieser den Wert `Part1\Part Number` übergebe. Dann übergebe ich diese Variable an das Makro; und so sieht das Script dazu aus: Reaction:
let Number (String) Number = `Part1\Part Number` `Relations\VB Scripts.1\VB Script.1` .Run( Number)
Ich sag Dankeschön für die Unterstützung und wünsche noch einen schönen Tag. Beste Grüße Chris
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |