Autor
|
Thema: Linie auf Blatthintergrund erstellen (3607 mal gelesen)
|
hawu Mitglied Auszubildender
Beiträge: 53 Registriert: 09.09.2007
|
erstellt am: 14. Nov. 2008 11:07 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich versuche mit einem Catscript eine Linie auf dem Blatthintergrund im Drawing zu erstellen. Hierzu habe ich eine Linie erstellt und diesen Vorgang als Makro aufgezeichnet. Leider war das aufgezeichnete Skript leer. Wie kann man via script eine Linie auf dem Blatthintergrund erzeugen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ogard1 Mitglied Verfahrenstechniker
Beiträge: 442 Registriert: 12.09.2004 R19 SP2
|
erstellt am: 14. Nov. 2008 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für hawu
Hallo, hier Code zum erstellen eine Linie auf Koordinate Null, Language="VBSCRIPT" Sub CATMain() Set Documents = CATIA.Documents Set Document = CATIA.ActiveDocument Set DrawingSheets = Document.Sheets Set DrawingSheet = DrawingSheets.Item("Sheet.1")
Set DrawingViews = DrawingSheet.Views Set DrawingView = DrawingViews.ActiveView Set Factory2D = DrawingView.Factory2D Set Selection = Document.Selection
'Erstellen horizontale linie auf der Null Koordinate'
Set LineLeftExtremity = Factory2D.CreatePoint(-100.0, 0.0) Set LineRightExtremity = Factory2D.CreatePoint(100.0, 0.0) Set Line2D = Factory2D.CreateLine(-100.0, 0.0, 100.0, 0.0) Line2D.StartPoint = LineLeftExtremity Line2D.EndPoint = LineRightExtremity End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 14. Nov. 2008 20:33 <-- editieren / zitieren --> Unities abgeben: Nur für hawu
Hallo, folgendes ist zwar in VBA, müsste aber in CATScript auch gehen:
Code: Sub CATMain() Dim oDoc As Document Set oDoc = CATIA.ActiveDocument
If LCase(TypeName(oDoc)) = "drawingdocument" Then Dim oDrawingSheets As DrawingSheets Set oDrawingSheets = oDoc.Sheets Dim oSheet As DrawingSheet Set oSheet = oDrawingSheets.ActiveSheet Dim oViews As DrawingViews Set oViews = oSheet.Views 'Hintegrund = Views.item(2) 'so läuft es aber komischerweise nicht ??? Dim oBgView As DrawingView Set oBgView = oViews.Item(1) MsgBox oBgView.Name Dim oFac2d As Factory2D Set oFac2d = oBgView.Factory2D 'Erstellen horizontale linie auf der Null Koordinate' Dim LineLeftExtremity As Point2D Dim LineRightExtremity As Point2D Dim oLine2D As Line2D Set LineLeftExtremity = oFac2d.CreatePoint(-100#, 0#) Set LineRightExtremity = oFac2d.CreatePoint(100#, 0#) Set oLine2D = oFac2d.CreateLine(-100#, 0#, 100#, 0#) oLine2D.StartPoint = LineLeftExtremity oLine2D.EndPoint = LineRightExtremity End If
End Sub
Komischerweise kann man aber nichts somit in den Hintergrund zeichnen. Es wäre auf jeder Blatt die Ansicht 2, da lässt CATIA aber nichts zeichnen. Weiß da jemand besser? Gruß, Zoltán Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K.Siebert Mitglied Tech Zeichner
Beiträge: 415 Registriert: 19.05.2007 Win XP Catia V5 R19 Catia V5 R24
|
erstellt am: 14. Nov. 2008 21:10 <-- editieren / zitieren --> Unities abgeben: Nur für hawu
Hallo zusammen, Ist nicht getestet und aus einem anderem Skript Kopiert Code: '__________________In den Hintergrund wecheln_________________________________Set oDraw = CATIA.ActiveDocument ' Zeichnung als aktives Dokument bestimmen Set oSheets = oDraw.Sheets Set oSheet = oSheets.ActiveSheet oSheet.Activate Set oViews = oSheet.Views oSheet.Views.Item(2).Activate ' BLATT001 aktivieren Set oView = oViews.Item(2) oView.Activate '__________________________________________________________________________
Und wider zurück Code: '__________________In den Vordergrund wecheln_________________________________Dim ErrorFrame As Integer Set oDraw = CATIA.ActiveDocument Set oSheets = oDraw.Sheets Set oSheet = oSheets.ActiveSheet oSheet.Activate Set oViews = oSheet.Views oSheet.Views.Item(1).Activate ' BLATT001 aktivieren Set oView = oViews.Item(1) oView.Activate
------------------ Sei Schlau bleib Dumm !!?!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kai Knospe Mitglied Problemlöser
Beiträge: 27 Registriert: 27.01.2006 R18SP2 // XP SP2 auf HP xw4600<P>R16SP3 // HP-UX auf HP c8000
|
erstellt am: 14. Nov. 2008 22:24 <-- editieren / zitieren --> Unities abgeben: Nur für hawu
Moin, wenn ich das so recht überblicke suchst Du in etwa sowas: Code: Sub CATMain() Set oDrawingDocument = CATIA.Documents.Add("Drawing") Set oSheet = oDrawingDocument.Sheets.Item(1) For iCount = 1 To oSheet.Views.Count If oSheet.Views.Item(iCount).ViewType = catViewBackground Then iMainView = iCount End If Next Set oView = oSheet.Views.Item(iMainView) oView.Activate Set oFactory2D = oView.Factory2D Set oCircle = oFactory2D.CreateClosedCircle(50, 50, 50) End Sub
Dabei gehen die meisten Zeilen drauf, die MainView aus der Enumeration zu holen und nicht irgendwie...(das klappt manchmal auch ;-) ) Gruss, Kai Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hawu Mitglied Auszubildender
Beiträge: 53 Registriert: 09.09.2007
|
erstellt am: 17. Nov. 2008 08:17 <-- editieren / zitieren --> Unities abgeben:
hallo ogard, vielen Dank für die Antwort. Set LineLeftExtremity = Factory2D.CreatePoint(-100.0, 0.0) Set LineRightExtremity = Factory2D.CreatePoint(100.0, 0.0) Warum muss man hier die Punket definieren, ich habe sie weggelassen und nur die linie gezeichnet und es hat funktioniert. Hat es vorteile, wenn man die Punkte zuvor definiert? gruß hawu Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ogard1 Mitglied Verfahrenstechniker
Beiträge: 442 Registriert: 12.09.2004 R19 SP2
|
erstellt am: 17. Nov. 2008 09:55 <-- editieren / zitieren --> Unities abgeben: Nur für hawu
Hallo, das hängt davon ab was mann machen möchte, zb. wenn du 2 Linien erstellen möchtest, eine Horizontal andere 90Grad Vertikal am ende der erste, dann ist es einfacher aus meiner Sicht sich auf den Punkt zu beziehen. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Speedway04 Mitglied Konstrukteur
Beiträge: 30 Registriert: 16.07.2007
|
erstellt am: 20. Mrz. 2009 00:59 <-- editieren / zitieren --> Unities abgeben: Nur für hawu
Hallo an alle Programmierer, ich habe sehr glücklich diesen Beitrag gefunden, wie man mit einem vba - Makro, im Drawing in den Blatthintergrund kommt. Jetzt habe ich aber die Frage, ob das ganze vielleicht release abhängig ist? Denn auf der 19 gehts und bei der 16 krieg ich es nicht zum laufen, bzw. läuft schon aber er geht nicht in den Blatthintergrund. Da ich Neuling in der VBA - Welt bin und lernen möchte würde ich mich über eine kurze Antwort freuen. Den Code kriege ich schon irgendwie raus, würde daher nur gerne Wissen, ob das Makro überhaupt unter der 16 lauffähig wäre und wenn nicht kann ich es ändern? Möchte wie gesagt nicht die Lösung haben, sondern nur nen Tipp warum es nicht geht. Also einen kleinen denkanstoß. ------------------ mfg Udo
[Diese Nachricht wurde von Speedway04 am 20. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hawu Mitglied Auszubildender
Beiträge: 53 Registriert: 09.09.2007
|
erstellt am: 20. Mrz. 2009 09:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Speedway, ich habe das ein aehnliches Problem. Makros die ich mit VBS auf R16 erstellt habe, krieg auf R18 nicht oder nur teilweise zum laufen. Ich kann Dir leider keine Antwort geben, zumal ich grae im Urlaub bin. Wuerde aber empfehlen einen eigenen Post speziell zum Thema Realese zu eroeffnen. um mehr Resonanz zu bekommen. Achtung! Der Code von Kai Knospe ist in VisualBasicScript und nicht in VBA geschrieben. Das wird aber nicht der Grund fuer Dein Problem sein. Viele Gruesse HaWu Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stoffel Mitglied Student
Beiträge: 322 Registriert: 09.10.2002 R6/V2010
|
erstellt am: 20. Mrz. 2009 14:42 <-- editieren / zitieren --> Unities abgeben: Nur für hawu
Zitat: Original erstellt von Speedway04: vielleicht release abhängig ist? Denn auf der 19 gehts und bei der 16 krieg ich es nicht zum laufen
vielleicht schon. In der Doku steht genau drin, was sich in den verschiedenen Releases geändert hat. Und wenn du eine dieser geänderten Funktionen nutzt wirds halt knallen. Ansonsten: Einfach mal den Fehler posten, dann kann man dir evtl. auch helfen.... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Speedway04 Mitglied Konstrukteur
Beiträge: 30 Registriert: 16.07.2007
|
erstellt am: 20. Mrz. 2009 15:40 <-- editieren / zitieren --> Unities abgeben: Nur für hawu
Der Code ist genau der gleiche wie bei Kai Knospe. Wenn ich das ganze im Watch fenster verfolge steht auch in den einzelen elementen genau das was ich brauche. das Problem ist nur das er am ende nicht in den Blatthintergrund schaltet. Das passiert bei der R16. Bei der R19 bringt der gleiche Code das gewünschte ergebniss. Verstehe halt nicht warum er bei der R16 die variabeln und alles richtig findet nur den letzten schritt, das umschalten in den Blatthintergrund, nicht macht. ------------------ mfg Udo
[Diese Nachricht wurde von Speedway04 am 20. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 23. Mrz. 2009 21:53 <-- editieren / zitieren --> Unities abgeben: Nur für hawu
Hallo Speedway04, ich würde mich "Stoffel" anschließen und behaupten, das es das ".ViewType" aus "oSheet.Views.Item(iCount).ViewType" in R16 noch nicht gab! Aber aus meiner Sicht und Erfahrung brauchst Du auch nicht die "aufwendige" Suche nach der Background-View! Bis jetzt (R17?) war die Background-View immer "oSheet.Views.Item(2)" und die Main-View immer "oSheet.Views.Item(1)". Versuch doch mal, das Script so umzustellen, das Du gleich in "oSheet.Views.Item(2)" die Linie erstellst! Der Code von "Kai Knospe" sollte dann so lauten: Code: Sub CATMain() Set oDrawingDocument = CATIA.Documents.Add("Drawing") Set oSheet = oDrawingDocument.Sheets.Item(1) Set oView = oSheet.Views.Item(2) oView.Activate Set oFactory2D = oView.Factory2D Set oCircle = oFactory2D.CreateClosedCircle(50, 50, 50) End Sub
Ist allerdings nicht getestet! 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 |
Speedway04 Mitglied Konstrukteur
Beiträge: 30 Registriert: 16.07.2007
|
erstellt am: 24. Mrz. 2009 18:44 <-- editieren / zitieren --> Unities abgeben: Nur für hawu
hi an euch alle, erstmal danke für die tips und ratschläge. Das Problem das der code auf der r16 bei mir nicht läuft und auf der r19 schon hat sich erledigt. Habe es an einem anderen rechner laufen lassen können und da läuft es fehlerfrei auf der r16. danke für die info das die schleife nicht benötigt wird. das war ein punkt den ich nicht ganz verstanden habe warum das mit schleife gemacht werden muss. Aber wenn ihr der Meinung seit das das ganze auch mit direkt ansprechen also set oview = osheet.Views.Item(2) geht werde ich die schleife wieder raus nehmen. vielen dank für die tipps und ratschläge. ------------------ mfg Udo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |