Autor
|
Thema: Feature erzeugen (2332 mal gelesen)
|
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 12. Jul. 2005 17:08 <-- editieren / zitieren --> Unities abgeben:
Hallo, ist es möglich mittels makro ein feature zu erzeugen wo spezifische werte voreingestellt sind? z.b. ein Hole mit voreingestellten werten und einem speziellen featurenamen ich komme immer nicht darüber hinaus die reference flexibel zu machen, ich kann nur die werte voreinstellen, wie es mir die macroaufzeichnung anzeigt ciao carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 13. Jul. 2005 10:20 <-- editieren / zitieren --> Unities abgeben:
ich leg hier noch ein bild an. also es sollte so aussehen das ich ein makro schreib, wo die ganzen voreinstellungen schon gemacht wurden und das Fenster(s.Bild) nicht erscheint. die fläche sollte man natürlich vorher selber auswählen können. und wenn das feature erzeugt wurde soll in dem makro drin stehen das es in z.b. "FEATURE" umbenannt wird. also so ein standardbutton der immer das gleiche feature einfügt. wie kann ich sagen das die fläche nicht fest, sondern variabel ist? und wie geb ich dem feature eigentlich einen namen? ich hoffe es ist klar was ich vorhabe, kann mir da bitte einer hilfestellung geben. 1000dank carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 13. Jul. 2005 11:06 <-- editieren / zitieren --> Unities abgeben:
|
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 13. Jul. 2005 13:22 <-- editieren / zitieren --> Unities abgeben:
also die variable referenc hab ich jetz auch schon nur bei der sache brauch ich jetz echt eure hilfe, wie kann ich die mauswerte auslesen. die werte möchte ich dann bei AddNewHoleFromPoint verwenden. d.h. das loch soll dort entstehen wo der anwender auf die fläche geklickt hat heissen dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MaxZ Mitglied Computer Aided Designer
Beiträge: 125 Registriert: 24.05.2005 V5 R16
|
erstellt am: 13. Jul. 2005 13:26 <-- editieren / zitieren --> Unities abgeben: Nur für Cars10
meinst du mit "wo der anwender auf die fläche geklickt hat" den speziellen Punkt auf der fläche oder nur die fläche ansich? aus meiner sicht benötigt man zwei klicks (kann mich auch täuschen), einen auf die fläche, einen auf den Punkt (falls dieser nicht einer namenskonvention unterliegt). Ciao Max Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 13. Jul. 2005 13:30 <-- editieren / zitieren --> Unities abgeben:
hallo, also normal nimmt catia mit einem klick gleich beide werte (fläche und punkt). ich benötige jetz noch die funktion welche mir die koordinaten ausgibt, und genau dort kann ich dann mein hole platzieren kannst du mir da nochmal helfen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 13. Jul. 2005 17:22 <-- editieren / zitieren --> Unities abgeben:
Zusatzfrage: wie bekommt man eigentlich den Namen des aktiven Parts in einer Baugruppe heraus? also wenn ich in einer Baugruppe auf ein Part doppelklicke dann ist es blau hinterlegt und die workbench hat sich geändert. aber mir ist es nicht gelungen den partname des aktiven parts auszulesen*fuck* please help me ciao carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
LordFuture Mitglied
Beiträge: 21 Registriert: 16.03.2004 V5 R14 (Unix) (nur auf der Arbeit) (ohne Administrative Rechte) (User...)
|
erstellt am: 13. Jul. 2005 20:55 <-- editieren / zitieren --> Unities abgeben: Nur für Cars10
Tach, Also zuerst Zusatzfrage Name des Partes: Mir wurde gesagt (wollte ja auch schon mal den Befehl dazu wissen ;-) ) dass des nur mit einer sehr komplexen Routine möglich ist. Mann muss da so ne Prozedur ausführen wo ne Fehlermeldung ausgiebt und die dann abfangen und aus ihr den Partnamen ermitteln oder so ähnlich. Wenn jemand so was hat kann er mir des gerne mal mailen ;-). Der Typ wo mir des gesagt hat ist eine art Hauptberuflicher Makroprogrammierer weshalb ich mal davon ausgehe dass des stimmt. Thema Features: Geht es dir darum dies unbedingt mit einem Mako zu lösen oder geht es dir mehr darum eben schnell durch Angabe einer Fläche und eines Punktes ein von dir definiertes Standardgewinde (z.B. M5, Sackloch, Spitze, t=15, t2=20 etc.) einzubringen? Falls letzteres würde ich kein Makro schreiben sondern eine PowerCopy anlegen. Ist einfacher und eine Catia-Funktion zum erstellen von sozusagen "Eigenen Features"
------------------ Software is like sex - its better when ist free! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 14. Jul. 2005 08:34 <-- editieren / zitieren --> Unities abgeben:
morgen, zusatzfrage: das macro könnte dann nur in der partumgebung(open in new window) ausgeführt werden --> da ist man etwas eingeschränkt, schade. hatte diesbezüglich bisher auch keine hilfe finden können powercopy ist eine gute idee, muss man schaun ob das für den zweck praktikabel ist. denn mit powercopy hab ich bisher noch nicht so oft gearbeitet tnx for ya help ps:your slogan is pretty good, look at the word before last Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MaxZ Mitglied Computer Aided Designer
Beiträge: 125 Registriert: 24.05.2005 V5 R16
|
erstellt am: 14. Jul. 2005 12:51 <-- editieren / zitieren --> Unities abgeben: Nur für Cars10
|
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 14. Jul. 2005 14:16 <-- editieren / zitieren --> Unities abgeben:
jep, da muss man wahrscheinlich vorher ein punkt erzeugen. nur die normale hole-funktion von catia nimmt gleich beide werte. naja halb so wild, ich nehm mir mal die powercopy sache zur brust dankeschön für eure hilfe frage: in einem part können ja mehrere Körper vorhanden sein, wie bekomme ich den namen des körpers heraus in dem grad gearbeitet wird? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MaxZ Mitglied Computer Aided Designer
Beiträge: 125 Registriert: 24.05.2005 V5 R16
|
erstellt am: 14. Jul. 2005 14:28 <-- editieren / zitieren --> Unities abgeben: Nur für Cars10
einfach nach einem grad erzeugten feature suchen und mit .parent.parent.name kommst du an den namen des übergeordneten körpers. bei mir läuft: Sub catmain() Set sel = CATIA.ActiveDocument.Selection sel.Search ("Name='Block.1',all") koerper = sel.Item(1).Value.Parent.Parent.Name msgbox koerper End Sub vermutlich müsst auch direkt nach der erzeugung zb pad1.parent.parent.name funktionieren, wär vermutlich schneller. besonders wenns um große teile geht können die suchen sehr lange dauern. einfach mal ausprobieren und mit der msgbox testen. Ciao Max [Diese Nachricht wurde von MaxZ am 14. Jul. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 14. Jul. 2005 15:29 <-- editieren / zitieren --> Unities abgeben:
geht es auch nach allen körpern die ein feature enthalten zu suchen? d.h. leere körper sind uninteressant 1000dank ps: nicht jeder körper besitzt ein Block.1, auch Welle.1 oder ähnliches(mit anderer nummer) kommt vor [Diese Nachricht wurde von Cars10 am 14. Jul. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 14. Jul. 2005 15:40 <-- editieren / zitieren --> Unities abgeben:
|
MaxZ Mitglied Computer Aided Designer
Beiträge: 125 Registriert: 24.05.2005 V5 R16
|
erstellt am: 14. Jul. 2005 16:24 <-- editieren / zitieren --> Unities abgeben: Nur für Cars10
jo, kamman! Per kleiner Verschachtelung und mit IF und NEXT. Sieht dann ungefähr so aus: Sub CATMain() Dim body_array() As String Set partDocument1 = CATIA.ActiveDocument Set selection1 = partDocument1.Selection 'Selection aller Koerper selection1.Search "((CATStFreeStyleSearch.BodyFeature + CATPrtSearch.BodyFeature) + CATGmoSearch.BodyFeature),all" 'Zählen der Elemente der Selection1 bodycount = selection1.Count ReDim body_array(bodycount) For i = 1 To bodycount 'Anlegen eines Namensarray der Bodynamen body_array(i) = selection1.Item(i).Value.Name Next i For i = 1 To bodycount selection1.Clear 'erzeugen des für die Suche notwendigen String, Body selektieren searchstring = "Name='" & body_array(i) & "',all" selection1.Search (searchstring) 'den selektierten Body auf Features durchsuchen selection1.Search "CATPrtSearch.MechanicalFeature,sel" featurecount = selection1.Count 'Falls feature-anzahl ungleich 0 If featurecount <> 0 Then MsgBox body_array(i) & " enthält Features!" 'falls feature-anzahl gleich 0 ElseIf featurecount = 0 Then MsgBox body_array(i) & " enthält KEINE Features!" End If Next i End Sub Läuft bei mir, sollt überall anders auch. ; ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 14. Jul. 2005 16:45 <-- editieren / zitieren --> Unities abgeben:
absolute fantastic i can't believe it i can't believe it 1000dank ps:wie kommt man an die ganzen bezeichnungen, wie zb bei der selection der elemente
[Diese Nachricht wurde von Cars10 am 14. Jul. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MaxZ Mitglied Computer Aided Designer
Beiträge: 125 Registriert: 24.05.2005 V5 R16
|
erstellt am: 14. Jul. 2005 19:49 <-- editieren / zitieren --> Unities abgeben: Nur für Cars10
Naja, teils kann man sich Makros mit dem Recorder aufzeichnen, is beim Suchen immer ganz hilfreich, und sonst hier im Forum suchen oder in den Hilfen von VB oder CATIA. Wenn man mal so nen Grundstock an Funktionen und befehlen drauf hat und a bissl durchblickt, wie das alles so gestrickt wird, kann man schon einige Aufgabenstellungen lösen. Liegt dann eher am ausknobeln, wie man das ganze mit IFs und NEXTs und so verwurstet. (Bei mir wenigstens) Bin eigentlich auch noch recht neu auf dem Gebiet der Makroprogrammierung in V5, machs auch erst seit rund 3 Monaten. Konnt aber vorher schon in einigen andren Programmiersprachen n paar Erfahrungen sammeln, auch was die Programmierung von Applikationen angeht. Da bleibt einiges an Lösungswegen hängen. Ciao Max Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steffen Hohmann Mitglied
Beiträge: 446 Registriert: 06.03.2002
|
erstellt am: 15. Jul. 2005 08:09 <-- editieren / zitieren --> Unities abgeben: Nur für Cars10
Hallo Carsten, hallo Max, die Prüfung nach leeren Bodies geht auch direkt ohne die Verwendung einer Selektion: oBody.Sketches.Count - Anzahl der Skizzen oBody.Shapes.Count - Anzahl der Feature oBody.Hybridbodies.Count - Anzahl der 'Geöffneten Körper' Diese Anzahl lääßt sich ja sehr einfach auf null prüfen. Gruß Steffen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 15. Jul. 2005 10:15 <-- editieren / zitieren --> Unities abgeben:
morgen, ich versuche die ganze zeit in die andere richtung zu splitten. das funzt aber nicht Set Product = Catia.ActiveDocument name = Product.Name name = Split(name, ".", 1) MsgBox name ich möchte mir ausgeben lassen ob es sich um ein CATProduct oder CATPart handelt in dem grad gearbeitet wird. wie kann man das realisieren, weil das macro was ich anwende nur im Part(OpenInNewWindow) funzt. es soll dann quasi ein hinweis erscheinen "Wechsle in Partumgebung mit Open in new Window" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MaxZ Mitglied Computer Aided Designer
Beiträge: 125 Registriert: 24.05.2005 V5 R16
|
erstellt am: 15. Jul. 2005 10:21 <-- editieren / zitieren --> Unities abgeben: Nur für Cars10
|
Cars10 Mitglied
Beiträge: 97 Registriert: 17.05.2005
|
erstellt am: 15. Jul. 2005 10:38 <-- editieren / zitieren --> Unities abgeben:
hallo max, prima, so einfach gehts. ich hatte dann eine IF .. THEN ELSEIF .. END IF anweisung verwendet, damit hat es auch geklappt, aber ist etwas länger und komplizierter gewesen. tnx a lot!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |