Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  selektion während eines Makros

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  selektion während eines Makros (2165 mal gelesen)
Helmut Kuckertz
Mitglied
Maschinenbaumeister


Sehen Sie sich das Profil von Helmut Kuckertz an!   Senden Sie eine Private Message an Helmut Kuckertz  Schreiben Sie einen Gästebucheintrag für Helmut Kuckertz

Beiträge: 26
Registriert: 09.09.2001

erstellt am: 27. Aug. 2003 15:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo V5ler
ich mache gerade meine ersten Schritte in der Makroprogrammierung.
Min aufgezeichnetes Makro sieht so aus:
es soll eine Ebene tangential zu einer Fläche generieren.

Language="VBSCRIPT"

Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim hybridShapeFactory1 As Factory
Set hybridShapeFactory1 = part1.HybridShapeFactory

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies

Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Item("Geöffneter Körper.1")
Wie kann ich hier auch andere "Geöffnete Körper selektieren?????

Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = hybridBody1.HybridShapes

Dim hybridShapeThickness1 As HybridShape
Set hybridShapeThickness1 = hybridShapes1.Item("Fläche.2 ( *FAC4 - wsp *MASTER -  )")Wie kann ich hier die Referenzfläche frei wählen????

Dim reference1 As Reference
Set reference1 = part1.CreateReferenceFromObject(hybridShapeThickness1)

Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim hybridShapePointExplicit1 As Parameter
Set hybridShapePointExplicit1 = parameters1.Item("Punkt.22 ( *PT18 - wsp *MASTER -  )")Wie kann ich den Referenzpunkt frei wählen????

Dim reference2 As Reference
Set reference2 = part1.CreateReferenceFromObject(hybridShapePointExplicit1)

Dim hybridShapePlaneTangent1 As HybridShapePlaneTangent
Set hybridShapePlaneTangent1 = hybridShapeFactory1.AddNewPlaneTangent(reference1, reference2)

hybridBody1.AppendHybridShape hybridShapePlaneTangent1

part1.InWorkObject = hybridShapePlaneTangent1

part1.Update

End Sub

Für das Buch von Dieter Ziethen über Makroprogrammierung bin ich scheinbar zu blöd! Das ist etwas für Computerfachleute.
Die Online- Doku gibt dazu auch nicht allzuviel her.

Vielen Dank für die Hilfe
Gruß Helmut

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

u01dz
Mitglied



Sehen Sie sich das Profil von u01dz an!   Senden Sie eine Private Message an u01dz  Schreiben Sie einen Gästebucheintrag für u01dz

Beiträge: 76
Registriert: 12.07.2003

V5R15GA

erstellt am: 29. Aug. 2003 07:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Helmut Kuckertz 10 Unities + Antwort hilfreich

Hi,

probiere mal das hier:
*******************************************************************

Sub CATMain()

' Voraussetzung:
' Das CATPart verfügt über eine Fläche und einen Punkt, der auf der Fläche liegt
' ================================================

Dim Dok, Bauteil, Selektion
Set Dok = CATIA.ActiveDocument
Set Bauteil = DoK.Part
Set Selektion = Dok.Selection

' Selektion der beiden Elemente ("Effiziente Konstruktion mit Makros", S. 50)
' =============================================
Dim Auswahl(0), E, Flaeche, Punkt, Treffer
Treffer = 0
Auswahl(0) = "Face"
Selektion.Clear
E = Selektion.SelectElement (Auswahl, "Fläche wählen", false)
If E = "Normal" Then
  Treffer = 1
  Set Flaeche = Selektion.Item(1).Value
  Auswahl(0) = "Point"
  Selektion.Clear
  E = Selektion.SelectElement (Auswahl, "Punkt wählen", false)
  If E = "Normal" Then
      Treffer = 2
      Set Punkt = Selektion.Item(1).Value
  End If
End If
Selektion.EndSelectElement
Selektion.Clear

' Ebene erzeugen ("Effiziente Konstruktion mit Makros", S. 92, 93 und 103)
' ============================================
Dim HBody, Ebene, HSF
Set HBody = Bauteil.HybridBodies.Add
HBody.Name = "Tangentiale Ebene"
Set HSF = Bauteil.HybridShapeFactory
Set Ebene = HSF.AddNewPlaneTangent (Flaeche, Punkt)
HBody.AppendHybridShape Ebene
Bauteil.Update

End Sub

------------------
Tschüß, Dieter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Helmut Kuckertz
Mitglied
Maschinenbaumeister


Sehen Sie sich das Profil von Helmut Kuckertz an!   Senden Sie eine Private Message an Helmut Kuckertz  Schreiben Sie einen Gästebucheintrag für Helmut Kuckertz

Beiträge: 26
Registriert: 09.09.2001

erstellt am: 02. Sep. 2003 09:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Dieter
warum legst Du in Deinem  Makro zum selektieren eine If- Then- Schleife? (Gleiches Problem wie in Effizientes Konstruieren mit Makros)
Gruß Helmut

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

u01dz
Mitglied



Sehen Sie sich das Profil von u01dz an!   Senden Sie eine Private Message an u01dz  Schreiben Sie einen Gästebucheintrag für u01dz

Beiträge: 76
Registriert: 12.07.2003

V5R15GA

erstellt am: 04. Sep. 2003 07:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Helmut Kuckertz 10 Unities + Antwort hilfreich

Hi,

die If-Then-Anweisung dient dazu, Eingabefehler abzufangen. Ein Anwender könnte ja anstelle eines Punktes oder einer Fläche die Selektion abbrechen.

Das Ende des Makros hatte ich nicht vollständig angegeben. Du kannst es wie folgt erweitern:

*****************************************
' Ebene erzeugen ("Effiziente Konstruktion mit Makros", S. 92, 93 und 103)
' ============================================
If Treffer = 2 Then
  Dim HBody, Ebene, HSF
  Set HBody = Bauteil.HybridBodies.Add
  HBody.Name = "Tangentiale Ebene"
  Set HSF = Bauteil.HybridShapeFactory
  Set Ebene = HSF.AddNewPlaneTangent (Flaeche, Punkt)
  HBody.AppendHybridShape Ebene
  Bauteil.Update
Else
  MsgBox ("Eingabefehler")
End If

------------------
Tschüß, Dieter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Helmut Kuckertz
Mitglied
Maschinenbaumeister


Sehen Sie sich das Profil von Helmut Kuckertz an!   Senden Sie eine Private Message an Helmut Kuckertz  Schreiben Sie einen Gästebucheintrag für Helmut Kuckertz

Beiträge: 26
Registriert: 09.09.2001

erstellt am: 10. Sep. 2003 15:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo V5ler

@Dieter
Vielen Dank für die Hilfe. Langsam fällt der Groschen.


Ich habe noch ein paar Fragen:

Language="VBSCRIPT"

Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim hybridShapeFactory1 As Factory
Set hybridShapeFactory1 = part1.HybridShapeFactory

Dim dok, bauteil, selection
set dok= CATIA.ActiveDocument
set bauteil=dok.part
set selection=dok.selection

Dim auswahl(0),E,punkt,treffer
treffer=0
auswahl(0)="Point"
selection.Clear
E=selection.selectelement(auswahl,"punkt1 wählen",false)
if E="Normal" then
  treffer=1
set punkt1=selection.item(1).value

auswahl(0)="Point"
selection.Clear
E=selection.selectelement(auswahl,"punkt2 wählen",false)
if E="Normal" then
  treffer=2
set punkt2=selection.item(1).value
auswahl(0)="Point"
selection.clear
E=selection.selectelement(auswahl,"punkt3 wählen",false)
if E="Normal" then
  treffer=3
set punkt3=selection.item(1).value
end if
end if
end if
selection.endselectelement
selection.clear

if treffer=3 then
dim hbody,ebene,hsf
set hbody=bauteil.hybridbodies.add
hbody.name="Nullebene"
set hsf=bauteil.hybridshapefactory
set ebene=hsf.AddNewPlane3Points(punkt1, punkt2, punkt3)
hbody.appendhybridshape ebene
bauteil.update
else
msgbox("Nee,Nee,Nee")
end if

End Sub

Das ist ein Makro zum Erzeugen einer Ebene durch drei Punkte. Es läuft auch sehr gut. Wenn ich nun  AddNewPlane3Points gegen AddNew PlaneMean austausche kommt eine Fehlermeldung. In einem späteren Makro muß ich eine Ebene an vier oder mehr Punkten ausrichten.
Was mache ich falsch?
Wie kann ich der neuen Ebene (nicht dem offenen Körper) einen Namen geben?

Danke für die Mühe
Gruß Helmut

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

u01dz
Mitglied



Sehen Sie sich das Profil von u01dz an!   Senden Sie eine Private Message an u01dz  Schreiben Sie einen Gästebucheintrag für u01dz

Beiträge: 76
Registriert: 12.07.2003

V5R15GA

erstellt am: 13. Sep. 2003 08:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Helmut Kuckertz 10 Unities + Antwort hilfreich

Hi,

bitte sieh einmal im Makrobuch auf S. 273 nach. Du benötigst für die Methode AddNewPlaneMean eine Punkteliste:

Dim PListe(2)
PListe(0) = punkt1
PListe(1) = punkt2
PListe(2) = punkt3
set ebene=hsf.AddNewPlaneMean(PListe,3)
hbody.appendhybridshape ebene
ebene.Name = "Meine Ebene durch eine Punktewolke"

------------------
Tschüß, Dieter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

u01dz
Mitglied



Sehen Sie sich das Profil von u01dz an!   Senden Sie eine Private Message an u01dz  Schreiben Sie einen Gästebucheintrag für u01dz

Beiträge: 76
Registriert: 12.07.2003

V5R15GA

erstellt am: 13. Sep. 2003 08:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Helmut Kuckertz 10 Unities + Antwort hilfreich

Hi,

noch ein Tipp: Wenn Du mehrere gleiche Objekte selektieren lässt, bietet sich eine For-Next- oder While-Do-Schleife an. Geschachtelte If-Abfragen funktionieren zwar auch, aber damit ist die Anzahl der Elemente immer fix.

------------------
Tschüß, Dieter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz