| |
| KISTERS 3DViewStation WebViewer: Sichere 3D-Visualisierung - jederzeit und überall, eine Pressemitteilung
|
Autor
|
Thema: äquidistate Punkte auf Spirale bei Lochplatte (3326 mal gelesen)
|
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 21. Dez. 2015 16:45 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, zunächst mal der Sachverhalt: zum Herstellen eines Reflexionsschalldämpfers sind Löcher auf einer Platte zu erzeugen. Die Platte hat 2 Durchbrüche für größere Rohre. Sowohl der Plattenrand, als auch die Durchbrüche haben einen Sicherheitsabstand zur Belochung der Platte. Die Belochung soll in verschiedenen variablen Mustern ausgeführt werden. Dabei soll der Lochabstand, sowie deren Durchmesser parametrisch gesteuert werden. Für mein erstes Belochungsmuster habe ich eine Spiralanordnung gewählt. Hiefür habe ich eine Spirale, mit Startpunkt=Ursprung und Endpkt= (Plattendurchmesser - Sicherheitsabstand - halber Lochdurchmesser), gezeichnet. Hierauf möchte ich Punkte in gleichen Abständen platzieren, an deren Stelle später Löcher sein sollen. Nun zu den Fragen: 1. Wie kann ich Punkte mit gleichem Abstand auf der Spirale generieren? Da sich die Spirale an den Außendurchmesser anpasst, muss ich auch die Punkteanzahl demnach anpassen. 2. Wie kann ich die Punkte (damit im Endeffekt Löcher) innerhalb der Durchgänge auslassen? vielen Dank schonmal! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Mitglied Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 22. Dez. 2015 22:57 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
Hi Ajoscha, zu 2) anders formuliert: - Falls ein Punkt innerhalb der kleinen Kreise liegt -> überspringen - Falls ein Punkt innerhalb des grossen Kreises liegt, aber mit Abstand < t zu einem kleinen -> überspringen - Falls ein Punkt innerhalb des grossen Kreises liegt, aber mit Abstand < t zum grossen -> überspringen zu1): - Spiralkurve mit funktionsabhängigem Radius erzeugen - Multi-Punkte auf Kurve erzeugen; Abstand Pkt/Pkt = s - Punktenamen ändern; etwa Point.1 -> Test001_Point.1 - Spiralkurve an neuen Radius anpassen über Funktion - Punkte über String 'Test001_' suchen und löschen - Punkte neu anlegen und umbenennen; s = s_neu; Wenn Du den ersten Punktesatz beibehalten willst, wird's hässlicher: - anstatt die alten Punkte zu löschen, die Koordinaten an einen Satz neu erzeugter temporärer Punkte angleichen - überschüssige Punkte löschen, fehlende anfügen - den Temporärsatz löschen So als erster Ansatz. Tschau, Joe Ausserdem zum Thema: - http://ww3.cad.de/foren/ubb/Forum137/HTML/004384.shtml#000009
------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Mitglied Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 27. Dez. 2015 15:09 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
|
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 27. Dez. 2015 15:23 <-- editieren / zitieren --> Unities abgeben:
Hi Joe, vielen Dank, ich werde gleich mal reingucken Mein Problem ist, dass alles automatisch laufen muss und durch Parameter steuerbar sein soll. Dabei ist darauf zu achten, dass es in den Löchern der Durchzüge nicht zu Verschneidungen mit Perforationslöchern kommen darf. In der Knowledgeware von Catia bin ich noch Neulig, diese muss aber wahrscheinlich hier zum Einsatz kommen. Die Steuerung der Spirale funktioniert soweit. Auch die Punkte kann ich mit der "Points and Plane Repetition" äuquidistant setzten. Erstes Problem dabei ist, dass man für die Punktezahl (Instances) keine Funktion und damit keinen Parameter eingeben kann. Dabei würde ich die Punkteanzahl aus der Bahnlänge der Spirale/Eingabeparameter für die Lochabstände ermitteln. Ich hoffe es mit dem Link, den du eben gepostet hast, hinzubekommen vielen Dank und viele Grüße Aljoscha Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 29. Dez. 2015 17:14 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal, danke Joe nochmal für die Lösung, die eigentlich genau mein Problem beschreibt, für einen Laien in Visual Basic ist sie leider nur schwer nachvollziehbar. Ich habe mir also nochmal Gedanken gemacht und dachte an eine Lösung mittels Knowledge Pattern. Folgender Code erzeugt mir zumindest mal automatisch Punkte auf der parametrisierten Spirallänge. let i (Integer) let pt (Point) i=1 for i while i<= Punktanzahl_Spirale { pt = CreateOrModifyDatum("point",Punkte_Spirale ,`Relations\Knowledge Pattern.1\List.1` ,i) pt = pointoncurveRatio(Punkte_Spirale\Spiral.1 ,Sicherheitskreise\Mittelpunkt_gr_Sicherheitskreis,i/Punktanzahl_Spirale ,true) i=i+1 } Mein Problem sind jetzt besonders die fehlenden Begrifflichkeiten für die Programmiersprache. Ich dachte mir, eine direkte Messung des Punktabstandes vom Mittelpunkt des Schalldämpfers. Man könnte dann für den Fall des äußeren Sicherheitsbereiches schreiben: Wenn der Radius des Messergebnisses größer als der Radius des Sicherheitsbereiches ist, dann soll der Punkt gelöscht werden. Wie kann man die Radiusmessung und das Löschen des Punktes ausdrücken? Im Folgenden noch ein erster Ansatz: let i (Integer) let pt (Point) let r (LENGTH) i=1 for i while i<= Punktanzahl_Spirale { pt = CreateOrModifyDatum("point",Punkte_Spirale ,`Relations\Knowledge Pattern.1\List.1` ,i) pt = pointoncurveRatio(Punkte_Spirale\Spiral.1 ,Sicherheitskreise\Mittelpunkt_gr_Sicherheitskreis,i/Punktanzahl_Spirale ,true) r = distance(Sicherheitskreise\Mittelpunkt_gr_Sicherheitskreis ,pt) if r >= Radius_Sicherheitsabstand_aussen {} i=i+1 }
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Mitglied Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 29. Dez. 2015 17:22 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
Hi Ajoscha, womit Du genau das machen willst, was mein Makro tut. - betrachteten Kreis mit Mittelpunkt festlegen - zulässigen Abstand definieren - Abstand der Punkte von der Kreismitte bestimmen - 'falsche' Punkte löschen/verstecken - nächster Kreis - ... Nur mit Knowledge Advisor kann ich Dir nicht weiterhelfen. Wer kennt die Syntax? Tschau, Joe ------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 29. Dez. 2015 17:53 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
Servus Ajoscha Leider kenne ich mich auch nicht so gut mit der Knowlegware Programmierung aus. Meine Idee dazu: ggf kannst du in der Schleife nach dem erzeugen des Punktes, die Messung durchführen und bei Bedarf den aktuellen Punkt deaktivieren. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 29. Dez. 2015 18:40 <-- editieren / zitieren --> Unities abgeben:
Stimmt Joe, ich habe dein Makro als Anregung genommen. Leider Fehlen mir aber die Programmierkenntnisse um das Makro bei meinem Modell zum Laufen zu bringen. Habe heut mal den Tag über rumgeknobelt, aber bisher klappt es nicht. @Bernd: Ja so dachte ich mir das. Es mangelt jetzt nur an den Begriffen für die Eingabe ins System ... Habe bisher einige Eingaben erfolglos ausprobiert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Mitglied Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 29. Dez. 2015 18:45 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
|
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 29. Dez. 2015 19:00 <-- editieren / zitieren --> Unities abgeben:
|
imation1999 Mitglied dipl.-ing. Maschinenbau
Beiträge: 276 Registriert: 02.08.2011 Dell Precision T3500 Intel® Xeon® Quad Core NVIDIA Quadro® 5000 Win7 x64 Ultimate CATIA V5 R20 SP2
|
erstellt am: 29. Dez. 2015 19:33 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
Hi Aljoscha, ich würde evtl. folgendes machen: - ein zweites Knowledges Pattern erstellen (Reihenfolge des Ablauf beachten) - zweites KWE Pattern durch die Punkte laufen lassen Grober Ablauf (Ich habe leider gerade kein CATIA): Code: let point1(point) ... ..point1 = ...PointsList->GetItem(i) `PointsList aus den erstem KWE Pattern if distance(point1; ....) > ... { point1.Activity = False }
[Diese Nachricht wurde von imation1999 am 29. Dez. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3425 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 29. Dez. 2015 19:49 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
|
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 29. Dez. 2015 20:01 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
Servus Leider handelt es sich bei den Punkten um isolierte Punkte, diese lassen sich nicht deaktivieren. Deshalb würde das Ausblenden gehen (oder gleich die Bohrungen erzeugen?): Code: let i (Integer) let pt (Point)i=1 for i while i<=PunkteAnzahlAufSpirale { pt = CreateOrModifyDatum("point",PunktAufSpirale\PunktAufSpirale_1 ,Beziehungen\Knowledgemuster.1\Punktliste ,i) pt = pointoncurveRatio(Input\Spirale.1,Input\UrspungSpirale ,i/PunkteAnzahlAufSpirale ,true) if distance(pt, Input\UrspungKreis ) <= RaduisSperrflaeche { pt.Show = false } i=i+1}
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 29. Dez. 2015 20:57 <-- editieren / zitieren --> Unities abgeben:
|
joehz Mitglied Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 29. Dez. 2015 20:59 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
Kurz das angepasste Makro. Die Objektnamen stehen im Bild: Code:
Const strMacroName As String = "TrimSpiralGrid" Const strMacroVersion As String = "1.0"Const dblr1 As Double = 2 'kleiner radius in mm Const dbls1 As Double = dblr1 + 2 'randabstand kleiner kreis zu grosser kreis Const dbls2 As Double = dblr1 + 2.5 'randabstand kleiner kreis zu mittlerem kreis Sub CATMain() Dim oADP As Part Dim oHSF As HybridShapeFactory Dim oOuterCircle As HybridShape 'main circle Dim oInnerCircle As HybridShape 'pipe circle Dim oPtCenter As HybridShape 'center of main circle Dim oPtRef As Reference 'ref of oPtCenter Dim oRef As Reference 'ref of grid point Dim n As Integer Dim oSel As Selection Dim SPA_WB As Workbench Dim oCPoint As Measurable 'representing center of the circle Dim dblOuterRad As Double 'radius outer circle Dim dblOuterRadZul As Double 'reduced outer circle Dim dblInnerRad As Double 'radius inner circle Dim dblInnerRadZul As Double 'reduced inner circle Dim oHBCircles As HybridBody 'set for circles Dim oRefPlane As Reference 'support plane for circles Dim oHSCircle As HybridShapeCircle 'new circle object CATIA.RefreshDisplay = False Set oADP = CATIA.ActiveDocument.Part Set oSel = CATIA.ActiveDocument.Selection oSel.Clear oSel.Search "'Generative Shape Design'.Point;in" 'select points in grid Set SPA_WB = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") 'delete points outside large circle Set oPtCenter = oADP.FindObjectByName("SICHERHEITSKREISE_MITTELPUNKT_GR_SICHERHEITSKREIS") Set oOuterCircle = oADP.FindObjectByName("SICHERHEITSKREISE_SICHERHEITSKREIS_GR") Set oPtRef = oOuterCircle.Center 'set centerpoint of circle reference Set oCPoint = SPA_WB.GetMeasurable(oPtRef) dblOuterRad = oOuterCircle.Radius.Value 'get radius of main circle dblOuterRadZul = dblOuterRad - dbls1 'reduce radius by margin For n = oSel.Count2 To 1 Step -1 'build reference Set oRef = oSel.Item2(n).Reference 'get distance to center point If oCPoint.GetMinimumDistance(oRef) > dblOuterRadZul Then oSel.Remove2 (n) 'if outside remove from selection End If DoEvents Next Debug.Print "Finished outer circle", oSel.Count2 & " points remaining" 'delete points from inner circle01 Set oPtCenter = oADP.FindObjectByName("pt.Ctr_Pipe01") Set oInnerCircle = oADP.FindObjectByName("Pipe01") Set oPtRef = oInnerCircle.Center 'set centerpoint of circle reference Set oCPoint = SPA_WB.GetMeasurable(oPtRef) dblInnerRad = oInnerCircle.Radius.Value 'get pipe radius dblInnerRadZul = dblInnerRad + dbls2 'add margin For n = oSel.Count2 To 1 Step -1 'build reference Set oRef = oSel.Item2(n).Reference 'get distance to center point If oCPoint.GetMinimumDistance(oRef) < dblInnerRadZul Then oSel.Remove2 (n) 'if inside remove End If DoEvents Next Debug.Print "Finished inner circle", oSel.Count2 & " points remaining" 'delete points from inner circle02 Set oPtCenter = oADP.FindObjectByName("pt.Ctr_Pipe02") Set oInnerCircle = oADP.FindObjectByName("Pipe02") Set oPtRef = oInnerCircle.Center 'set centerpoint of circle reference Set oCPoint = SPA_WB.GetMeasurable(oPtRef) dblInnerRad = oInnerCircle.Radius.Value 'get pipe radius dblInnerRadZul = dblInnerRad + dbls2 'add margin For n = oSel.Count2 To 1 Step -1 'build reference Set oRef = oSel.Item2(n).Reference 'get distance to center point If oCPoint.GetMinimumDistance(oRef) < dblInnerRadZul Then oSel.Remove2 (n) 'if inside remove End If DoEvents Next Debug.Print "Finished inner circles", oSel.Count2 & " points remaining" 'create circles Set oHBCircles = oADP.hybridBodies.Add oHBCircles.Name = "Circles" ' Set oHBCircles = oADP.hybridBodies.Item("Circles") Set oHSF = oADP.HybridShapeFactory Set oRefPlane = oOuterCircle.Support 'get support reference
For n = oSel.Count2 To 1 Step -1 'build reference Set oRef = oSel.Item2(n).Reference 'create circle Set oHSCircle = oHSF.AddNewCircleCtrRad(oRef, oRefPlane, True, dblr1) oHSCircle.SetLimitation 1 'closed circle oHBCircles.AppendHybridShape oHSCircle 'add to set oHSCircle.AxisComputation = True 'add axis DoEvents Next Debug.Print "Finished creating circles" oSel.Clear oADP.Update CATIA.RefreshDisplay = True oADP.Update DoEvents End Sub
Es handelt sich um ein im VBA-Editor erstelltes Makro, also kein CatScript. Könnte aber in ein solches umgewandelt werden. Dann aber ohne 'Debug.Print' - Anweisungen. Tschau, Joe
------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 29. Dez. 2015 21:02 <-- editieren / zitieren --> Unities abgeben:
|
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 30. Dez. 2015 11:36 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen zusammen, beim VBA-Code gibt es einen Error aufgrund der Variablendefinition "as Measurable"(siehe Anhang). Ich habe bereits gegoogled, aber keine ähnlichen Probleme gefunden. Das Knowlegpattern von gestern funktioniert soweit. Es müssen allerdings vor jedem Update alle generierten Lochkreise und Punkte wieder gelöscht werden. Da es sich ja nicht um ein Löschen der Kreise handelt, sondern nur um Verstecken, funktioniert es mit der Parameteränderung sonst nicht (Ergebnis bei nicht Löschen der zuvor generierten Elemente, siehe Anhang 2, 3). Gibt es einen Befehl für das Knowlege Pattern, der die Elemente aus einem GeometricalSet automatisch vor jedem Update löscht? Außerdem ist es auch etwas komisch, dass jeder Punkt eine laufende Nummer bekommt und beim Löschen eines Punktes die Nummer nicht mehr neu vergeben wird. D.h. man hat immer höhere Punktenummern, je öfter man die Kreise updated.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Mitglied Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 30. Dez. 2015 12:41 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
|
joehz Mitglied Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 30. Dez. 2015 13:17 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
Zitat:
Außerdem ist es auch etwas komisch, dass jeder Punkt eine laufende Nummer bekommt und beim Löschen eines Punktes die Nummer nicht mehr neu vergeben wird. D.h. man hat immer höhere Punktenummern, je öfter man die Kreise updated.
Das liegt an der internen Buchführung von Catia. Neu erzeugtes Element -> neue ID. Tschau, Joe ------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 30. Dez. 2015 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
|
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 30. Dez. 2015 14:14 <-- editieren / zitieren --> Unities abgeben:
Das war ja, eine einfache Lösung :O und ich dachte man müsste vor der Schleife immer alle Elemente die im GeometricalSet generiert wurden, löschen. Jetzt fehlt nur noch eine Sache: gibt es auch eine Syntax um direkt aus den Kreisen Löcher zu generieren? vielen Dank!!!und viele Grüße
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 30. Dez. 2015 14:39 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
Servus Schau mal in die Doku und tets mal rum: ggf kannst du über "CreateOrModifyTemplate" zB eine Musterbohrung über das Pattern vervielfältigen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 30. Dez. 2015 16:09 <-- editieren / zitieren --> Unities abgeben:
@Bernd: Problem dabei wäre, dass es keine dauerhafte Bohrung gibt. Im Endeffekt soll zwischen 3 verschiedenen Bohungsmustern gewählt werden können. So weit ich das verstanden habe, wäre dein Ansatz gut geeignet wenn es zumindest eine statische Bohrung gäbe. viele Grüße! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 30. Dez. 2015 16:48 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
Servus Schau dir mal das Beispiel mit dem Pattern und dem UDF bzw der CoperCopy aus der Doku an. Oder du hast jedes Part in Part, und nur der Körper bzw das Pattern wird deaktiviert. Vielleicht hilft das weiter. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 30. Dez. 2015 17:24 <-- editieren / zitieren --> Unities abgeben:
meinst du mit Doku den Catia Help Guide(sorry, bin leider noch Anfänger )? grade ist mir noch eingefallen: Falls es einen Code für zum trimmen des Kreisinhaltes gibt, könnte man den ja in die Schleife, welche die Löcher generiert einbauen...später beim Aufdicken wären es ja dann Löcher. viele Grüße Aljoscha Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 30. Dez. 2015 18:57 <-- editieren / zitieren --> Unities abgeben:
Man müsste es mit einer ähnlichen UDF wie hier https://www.youtube.com/watch?v=-h7rRYcQhtU machen können. Im vorliegenden Falle müsste es allerdings dann ein Split sein, anstatt dem "bead". Hat jemand eine Idee wie man das im Programm abbilden kann?? viele Grüße Aljoscha
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
imation1999 Mitglied dipl.-ing. Maschinenbau
Beiträge: 276 Registriert: 02.08.2011 Dell Precision T3500 Intel® Xeon® Quad Core NVIDIA Quadro® 5000 Win7 x64 Ultimate CATIA V5 R20 SP2
|
erstellt am: 30. Dez. 2015 19:17 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
Zitat: Im Endeffekt soll zwischen 3 verschiedenen Bohungsmustern gewählt werden können.
Was wären die 3 verschiedenen Bohrungsmuster? [Diese Nachricht wurde von imation1999 am 30. Dez. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 30. Dez. 2015 19:25 <-- editieren / zitieren --> Unities abgeben:
|
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 30. Dez. 2015 19:27 <-- editieren / zitieren --> Unities abgeben:
|
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 30. Dez. 2015 20:40 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 30. Dez. 2015 21:00 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
Servus Warum einen Split? Ich würde in der UDF/PowerCopy eine Bohrung "ablegen", die als Input den Punkt hat. (nicht getestet, hab zu wenig Erfahrung mit der WB) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 30. Dez. 2015 21:18 <-- editieren / zitieren --> Unities abgeben:
|
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 01. Jan. 2016 14:45 <-- editieren / zitieren --> Unities abgeben:
Frohes neues Jahr euch allen! Ich habe eine neue Idee zum Problem: Kann man vielleicht mit einer Syntax im Knowlegde Pattern die Kreise, welche mit .Show=false versteckt wurden, einem anderen Geometrical Set zuordnen als die anderen, sichtbaren Kreise? Dann könnte ich das Problem über einen Join des Geometrical Set-Inhaltes lösen . Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 01. Jan. 2016 15:43 <-- editieren / zitieren --> Unities abgeben:
Hier mal der Error, welcher angezeigt wird wenn man den Generate-Button, bei einer Bohrung als UDF, drückt. Möglicherweise kann ja jemand was damit anfangen und kennt einen Ausweg. viele Grüße Aljoscha Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Mitglied Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 01. Jan. 2016 16:39 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
|
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 01. Jan. 2016 18:52 <-- editieren / zitieren --> Unities abgeben:
Danke Joe, leider funktioniert das öffnen von .Cadpart nicht mit meinem Account (siehe Anhang). ich habe noch etwas an meinem Pattern rumgegrübelt und bin zu folgendem Schluss gekommen: ich werde die versteckten Elemente und die nicht versteckten in der Schleife auf verschiedene Geometrical Sets verteilen. Diese Joine ich und mache daraus Pockets.
Bei meinem Quellcode funktioniert es bisher, die versteckten Löcher in den Durchzügen einem anderen Geometrical set zuzuordnen. Bei den Löchern am Rand klappt es noch nicht. Ich stelle mal meinen Code hier rein - vielleicht erkennt jemand meinen Fehler. if distance(pt, `Geometrical Set\Sicherheitsabstaende\Sicherheitskreise\Mittelpunkt_gr_Sicherheitskreis` ) >=HILFSparameter\Radius_Sicherheitsabstand_aussen { c = CreateOrModifyDatum("circle",`Geometrical Set\V1\Lochkreise_hide` ,`Relations\Knowledge Pattern.1\List.2` ,i) } if distance(pt, `Geometrical Set\Sicherheitsabstaende\Sicherheitskreise\Mittelpkt_Durchzug_1` ) <= HILFSparameter\Radius_Sicherheitsabstand_Durchzug { c = CreateOrModifyDatum("circle",`Geometrical Set\V1\Lochkreise_hide` ,`Relations\Knowledge Pattern.1\List.2` ,i) } if distance(pt, `Geometrical Set\Sicherheitsabstaende\Sicherheitskreise\Mittelpkt_Durchzug_2` ) <= HILFSparameter\Radius_Sicherheitsabstand_Durchzug { c = CreateOrModifyDatum("circle",`Geometrical Set\V1\Lochkreise_hide` ,`Relations\Knowledge Pattern.1\List.2` ,i) } else {c = CreateOrModifyDatum("circle",`Geometrical Set\V1\Lochkreise` ,`Relations\Knowledge Pattern.1\List.2` ,i)} c=circleCtrRadius(pt,`yz plane` ,EINGABEparameter\Grundmodell\Lochdurchmesser /2,0,0deg,360deg) /*kreise verstecken*/ if distance(pt, `Geometrical Set\Sicherheitsabstaende\Sicherheitskreise\Mittelpunkt_gr_Sicherheitskreis` ) >=HILFSparameter\Radius_Sicherheitsabstand_aussen { c.Show = false } if distance(pt, `Geometrical Set\Sicherheitsabstaende\Sicherheitskreise\Mittelpkt_Durchzug_1` ) <= HILFSparameter\Radius_Sicherheitsabstand_Durchzug { c.Show = false } if distance(pt, `Geometrical Set\Sicherheitsabstaende\Sicherheitskreise\Mittelpkt_Durchzug_2` ) <= HILFSparameter\Radius_Sicherheitsabstand_Durchzug { c.Show = false }
viele Grüße
Aljoscha Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Mitglied Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 01. Jan. 2016 20:50 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
|
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 01. Jan. 2016 21:15 <-- editieren / zitieren --> Unities abgeben:
|
joehz Mitglied Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 01. Jan. 2016 21:49 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
|
AjoschaKoch Mitglied Student
Beiträge: 24 Registriert: 20.12.2015 Catia V6
|
erstellt am: 04. Jan. 2016 13:00 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 04. Jan. 2016 13:11 <-- editieren / zitieren --> Unities abgeben: Nur für AjoschaKoch
Servus Schon mal in der UDF (Bild 2): bei SuperTyp: "Auto" und bei Type1: "Generate" geklickt? Dann sollte dieser Typ (dessen Name du frei vergeben kannst) erstellt werden. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |