Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Selbst erstellte Parameter aus Part auslesen

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:  Selbst erstellte Parameter aus Part auslesen (7800 mal gelesen)
geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 27. Nov. 2012 14:38    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

Hey leute,

nachdem ich in den bestehenden themen nicht gefunden habe wonach ich suche versuch ichs mal aufm direkten weg.
ich hab mir ein makro zurechtgelegt das die eigenschaften meines parts ausliest und in meiner drawing den jeweiligen paramtern zuweist, damit keine tippfehler beim werte übernehmen entstehen können. für alle vordefinierten eigenschaften hat das wunderbar funktioniert (Name, Status, Beschreibung etc. )

jetzt hab ich allerdings das problem, dass mir das Material, Gewicht und Englische Bezeichnung nicht übernommen werden, da diese infos ja anscheinend auf einer anderen "ebene" abgelegt sind...hier mal ein ausschnitt aus meinem code

Code:

    .
    .
    ' get part number
    Dim sPartNumber ' As String
    sPartNumber = prdSource.PartNumber

    ' get nomenclature EN
    Dim sNomenclatureEN ' As String
    sNomenclatureEN = prod.Parameters.Item("`Properties\Nomenclature EN`")
    .
    .
    .
    .
    Set drawingDocument1 = CATIA.ActiveDocument
 
    ' place part number
    Set parameters1 = drawingDocument1.Parameters
    Set strParam1 = parameters1.Item("Part Number")
    strParam1.Value = sPartNumber

    ' place nomenclature EN
    Set strParam1 = parameters1.Item("Title EN")
    strParam1.Value = sNomenclatureEN


danke schon mal für eure hilfe!

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 27. Nov. 2012 16:39    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Willkommen im Forum.
Wie sieht deine Struktur aus? (ggf Screenshot des Strukturbaums)
ggf hilft dir die Objektauflösung im Makroeditor/VBA-Editor schon entsprechend weiter.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

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: 27. Nov. 2012 17:14    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 geeeSTAR 10 Unities + Antwort hilfreich

Eventuell hilft Dir http://ww3.cad.de/foren/ubb/Forum137/HTML/004904.shtml#000003 weiter, wo ich über i_partWork.Parameters und PartDoc.Product.UserRefProperties gehe.

------------------
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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 27. Nov. 2012 17:15    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


Unbenannt.jpg

 
danke schon mal für die schnelle antwort, hab mal ein bild vom struktur baum und sicherheitshalber den ausschnitt aus den props angehängt...die "Product Added Properties" sind die welche ich auslesen müsste..

meinst du mit objektauflösung den objektkatalog? hab mich mit vba bis jetzt noch wenig beschäftigt...


gruß
martin

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

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: 27. Nov. 2012 17: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 Nur für geeeSTAR 10 Unities + Antwort hilfreich

Das müssten die UserRefProperties sein, in denen es in dem anderen beitrag ging, wie man sie am besten wieder heraus bekommt. :-)

------------------
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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 27. Nov. 2012 17:43    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

ok, danke schon mal für die hilfe soweit...ich hab das mal probiert umzusetzen und komm trotzdem auf keinen grünen zweig. mein code um die masse auszulesen und ins parameterset der drawing einzufügen würde so ausschaun..

Code:

    ' get Mass
    Dim sMass ' As String
    Set ParamWorks = PartDoc.Product.UserRefProperties
    sMass = ParamWorks.Item("CAD Weight")

    ' place Mass
    Set strParam1 = parameters1.Item("Weight")
    strParam1.Value = sMass


ich nehm mal an, dass der fehler in zeile 4 is, weil ich nicht genau weiß wie ich auf die einzelnen items der UserRefProps zugreifen kann, bzw ob hier der klammerausdruck so aussehen müsste

Code:

    sMass = ParamWorks.Item("`Properties\CAD Weight`")

gruß
martin

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 27. Nov. 2012 18:04    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
IMHO ist es am einfachsten über eine Schleife die Namen der Parameter abfragen und diese bzw deren letzten Zeichen mit deinem Suchstring zu vergleichen:
Code:
Sub CATMain()
Dim PartDoc As partDocument
Dim ParamWorks As Parameters
Dim sMass As Parameter

Set PartDoc = CATIA.ActiveDocument
Set ParamWorks = PartDoc.Product.UserRefProperties   
Set sMass = getUserProperty(ParamWorks, "Test")

End Sub

Function getUserProperty(UserProperties As Parameters, ParameterName As String) As Parameter

Dim I As Integer

For I = 1 To UserProperties.Count
    If Right(UserProperties.Item(I).Name, Len(ParameterName)) = ParameterName Then
        Set getUserProperty = UserProperties.Item(I)
        Exit Function
    End If
Next
End Function



Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

[Diese Nachricht wurde von bgrittmann am 27. Nov. 2012 editiert.]

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

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: 28. Nov. 2012 09:53    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 geeeSTAR 10 Unities + Antwort hilfreich

Bernds Code gefällt mir. :-)

Ich würde, eventuell noch eine LCase()-Operation vorschalten um die Strings mit Kleinbuchstaben zu vergleichen, was eventuell Fehlerquellen reduziert.

------------------
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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 28. Nov. 2012 10:19    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Der Code hat noch einiges an Verbessungspotential:
- Fehlerabhandlung wenn es den Parameter nicht gibt
- Was passiert wenn mehre Parameter mit den gleichen Zeichenfolgen enden (zB "Masse" und "CAD-Masse")?
- ...
Den Code hab ich einfach mal so runter getippt.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 05. Dez. 2012 10:20    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

danke für den code...der war zwar ein guter ansatz für mich, es will aber iwie immer noch nicht wirklich klappen. macht es bei dem ganzen einen unterschied wenn im parameternamen leerzeichen vorkommen oder wird das auch erkannt? (bsp.: "CAD Weight")

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 05. Dez. 2012 22:09    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Beim mir funktioniert der Code auch wenn Leerzeichen in den Parameternamen vorkommen.
Hast du vielleicht beim Parameternamen an letzter Stelle noch ein Leerzeichen?
Ggf kannst du noch vor dem Vergleich in beiden Strings mit der Trim-Funktion die Leerzeichen entfernen.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 10. Dez. 2012 16:20    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

nein, an den leerzeichen liegt es leider auch nicht...er löscht den vorhandenen text in den parametern der zeichnung, so als ob er keinen wert aus dem part übernehmen würde. ich poste mal den ganzen code, vll is ja woanders der hund begraben

Code:

Sub CATMain()

    '------------------------------------
    ' RETRIEVE DRAWING DOCUMENT STRUCTURE
    '------------------------------------
    Dim docDrawing As DrawingDocument
    Set docDrawing = CATIA.ActiveDocument
   
    Dim drwSheets As DrawingSheets
    Set drwSheets = docDrawing.Sheets
   
    ' get active sheet
    Dim shActiveSheet As DrawingSheet
    Set shActiveSheet = drwSheets.ActiveSheet
   
    Dim drwViews As DrawingViews
    Set drwViews = shActiveSheet.Views
   
    ' get active view
    Dim vwActiveView As DrawingView
    Set vwActiveView = drwViews.ActiveView
   
    ' get background view
    Dim vwBackgroundView As DrawingView
    Set vwBackgroundView = drwViews.Item(2)

    ' get titleblock
    Dim vwTitleBlock As DrawingView
    Set vwTitleBlock = drwViews.Item(2)

    '------------------------------------------
    ' GET PART USED AS A SOURCE FOR ACTIVE VIEW
    '------------------------------------------
    Dim gbBehaviour As DrawingViewGenerativeBehavior
    Set gbBehaviour = vwActiveView.GenerativeBehavior
   
    ' get Product interface on source Part document
    Dim prdSource As Product
    On Error Resume Next
        Set prdSource = gbBehaviour.Document
   
    If (prdSource Is Nothing) Then
        MsgBox "Source Part document not found!", vbCritical
        Exit Sub
    End If

    '-----------------------------------
    ' ACCESS PROPERTIES IN PART DOCUMENT
    '-----------------------------------
    ' get part number
    Dim sPartNumber ' As String
    sPartNumber = prdSource.PartNumber

    ' get revision
    Dim sRevision ' As String
    sRevision = prdSource.Revision

    ' get definition
    Dim sDefinition ' As String
    sDefinition = prdSource.Definition

    ' get nomenclature DE
    Dim sNomenclature ' As String
    sNomenclature = prdSource.Nomenclature

    ' get product description
    Dim sDescriptionRef ' As String
    sDescriptionRef = prdSource.DescriptionRef

Dim PartDoc As partDocument
Dim ParamWorks As Parameters
Set PartDoc = CATIA.ActiveDocument

Dim sMaterial  As String
Set ParamWorks = PartDoc.Product.UserRefProperties   
Set sMaterial = getUserProperty(ParamWorks, "CAD Material")

Dim sMass As Parameter
Set ParamWorks = PartDoc.Product.UserRefProperties   
Set sMass = getUserProperty(ParamWorks, "CAD Weight")

Dim sNomEN As Parameter
Set ParamWorks = PartDoc.Product.UserRefProperties   
Set sNomEN = getUserProperty(ParamWorks, "Nomenclature EN")

    '------------------------------------------------
    ' PLACE VALUES OF PROPERTIES IN THEIR TEXTHOLDERS
    '------------------------------------------------
Set drawingDocument1 = CATIA.ActiveDocument
Set parameters1 = drawingDocument1.Parameters
 
' place part number
Set strParam1 = parameters1.Item("Part Number")
strParam1.Value = sPartNumber

    ' place revision
Set strParam1 = parameters1.Item("Revision")
strParam1.Value = sRevision

    ' place definition
Set strParam1 = parameters1.Item("Doc Status")
strParam1.Value = sDefinition

    ' place nomenclature DE
Set strParam1 = parameters1.Item("Title DE")
strParam1.Value = sNomenclature

    ' place nomenclature EN
Set strParam1 = parameters1.Item("Title EN")
strParam1.Value = sNomEN

    ' place product description
Set strParam1 = parameters1.Item("Description")
strParam1.Value = sDescriptionRef

    ' place product material
Set strParam1 = parameters1.Item("Material")
strParam1.Value = sMaterial

    ' place product weight
Set strParam1 = parameters1.Item("Weight")
strParam1.Value = sMass

MsgBox ("Schriftkopf wurde beschrieben")

End Sub

Function getUserProperty(UserProperties As Parameters, ParameterName As String) As String
Dim I As Integer

For I = 1 To UserProperties.Count
        If Right(UserProperties.Item(I).Name, Len(ParameterName)) = ParameterName Then
        Set getUserProperty = UserProperties.Item(I)
        Exit Function
    End If
Next
End Function


gruß
martin

------------------
Nimm nie einen Menschen, wenn du eine Maschine dafür nehmen kannst!

[Diese Nachricht wurde von geeeSTAR am 10. Dez. 2012 editiert.]

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Dez. 2012 16: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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Du verwendest für "docDrawing" und "PartDoc" beides mal das ActiveDocument. Welches Dokument ist nun aktiv?
Müsste es nicht zB:
Code:
Set PartDoc = prdSource
heißen?
Was passiert wenn es um eine Baugruppenzeichnung handelt (Dim PartDoc as Partdocument)?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 10. Dez. 2012 17:31    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


strukturbaum.jpg

 
docDrawing soll das aktive sein...

mir is grad aufgefallen, dass ich mir die zeile mit ActiveDocument in der "Place..." Sektion auch sparen kann wenn ich das parameterset auf docDrawing bezieh. trotzdem funktioniert das ganze no immer ned und mir gehn langsam die ideen aus, woran es scheitert...

kanns sein das mit den parameter typen irgendwas ned zam passt? CAD Material und NomEN sind vom typ "String", die CAD Masse is typ "Mass"

hab mal ein screen von meinen relations dazugegeben. vll is ja da was nicht ganz io...


gruß
martin

------------------
Nimm nie einen Menschen, wenn du eine Maschine dafür nehmen kannst!

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Dez. 2012 17:39    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Kopiere mal den Code in den VBA-Editor und für deisen dort schrittweise aus. Im Watch-fester kannst du dann den "Objekten beim arbeiten" zusehen.
Ich vermute, dass die Methode "getUserProperty" dir nur den Parameter zurück liefert und du den Wert noch auslesen muss zB sMass.Value oder sMass.ValueAsString

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 10. Dez. 2012 18:09    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

anscheinend dürfte das problem beim "ParamWorks" liegen

Code:

Set ParamWorks = PartDoc.Product.UserRefProperties

ich hab nach dem sMaterial block einen haltepunkt gesetzt...

Paramworks hat den Wert "Nothing", und sMaterial folglich auch weil er die function gar nicht so ausführt wies gedacht ist.

PartDoc.Product.UserRefProperties hat den Wert "<Objektvariable oder With-Blockvariable nicht festgelegt>"

was ist zu tun damit das ganze funktioniert?

gruß
martin

------------------
Nimm nie einen Menschen, wenn du eine Maschine dafür nehmen kannst!

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Dez. 2012 18:43    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Schau mal beim Objekt "PartDoc" wie du da zu den UserRefPropeties kommst (im Watchfenster ggf auch mal n der Doku schauen wo diese im Bezug zum Document zu finden sind).

Gruß
Bernd

EDIT: Du schaltest oben im Code mit "On Error Resume Next" die Fehlerbehandlung aus. Nach dem dem Prüfen ob ein Dokument vorhanden ist solltet du diese wieder über "on error goto 0" einschalten. Sonst suchst du dir bei der Fehlersuche einen Wolf (es werden keine Fehler mehr ausgegeben).

------------------
Warum einfach, wenn es auch kompliziert geht.

[Diese Nachricht wurde von bgrittmann am 10. Dez. 2012 editiert.]

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 13. Dez. 2012 12:38    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

bin beim debuggen grad auf folgenden fehler gestoßen...

Code:

    Dim prdSource As Product
    On Error Resume Next
        Set prdSource = gbBehaviour.Document
    .
    .
    Dim PartDoc As PartDocument
    Dim ParamWorks As Parameters
    Set PartDoc = prdSource

    Dim sMaterial  As Parameter
    Set ParamWorks = PartDoc.Product.UserRefProperties
    Set sMaterial = getUserProperty(ParamWorks, "CAD Material")
    .
    .


Fehler: Typen unvertrgälich.

prdSource is ja als Produkt deklariert und dann setzt ich aber ein PartDocument damit gleich. welchen typ brauch ich damit das ganze funktioniert?

gruß
martin

------------------
Nimm nie einen Menschen, wenn du eine Maschine dafür nehmen kannst!

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 13. Dez. 2012 14:07    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Falls prdSource schon ein Product zurück liefert kannst du kannst du vermutlich auf das PartDocument verzichten und direkt mit  "Set ParamWorks = prdSource.UserRefProperties" weiter machen. Was sagt das Watch-Fenster dazu?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 13. Dez. 2012 15:55    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


importprops.zip

 
es funktioniert! hab mal die zip datei hochgeladen damit die nachwelt auch noch was davon hat. ich werd auch noch ein bisschen daran rumbstaeln (maßstab aus hauptansicht übernehmen, blattnummer, etc.) aber das wichtigste kann das teil auf jedne fall mal. updates lad ich ggf. nat auch noch hoch wenns welche gibt

DANKE für eure geduld und die hilfreichen tipps


gruß
martin

------------------
Nimm nie einen Menschen, wenn du eine Maschine dafür nehmen kannst!

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 19. Dez. 2012 14:03    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

hey leute,

bin noch auf eine grundlegende frage gestoßen. wie ruft catia die parameter ab?

ich will zb die gesamtblattanzahl auslesen und in den schriftkopf einfügen. die ganzen infos liegen im parameters1 Set. nachdem ich das ganze über watch fenster mal beobachtet hab, hab ich dem eintrag gefunden, und will den so aufrugen/zuweisen

Code:

Dim blattanzahl
blattanzahl = parameters1.Item("RootParameterSet\Parent\Sheets\Count")

es funktioniert aber iwie ned...nach der zueisung steht für den wert von blattanzahl "leer". weis einer worans da hackt? und BTW weiß jemand wie/wo ich die nummer des aktuellen (aktiven) blattes herbekomm?

gruß
martin

------------------
Nimm nie einen Menschen, wenn du eine Maschine dafür nehmen kannst!

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 19. Dez. 2012 14:13    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Die Seitenzahl kannst du über zB:
Code:
Dim blattanzahl
blattanzahl = CATIA.ActiveDocument.Sheets.count
auslesen.
Parameter sind in diesem Sinne nur Knowlegware-Paramter und User-Parameter.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 19. Dez. 2012 15:03    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

alles klar, um die frage noch zu verfeinern...

ich brauche noch
.) die nummer des blattes selbst. diese info hab ich bis jetzt aber vergeblich in dem teil gesucht. es sollte am ende so im schriftkopf stehn 1/2, 2/2
.) den maßstab als x:x dargestellt. wenn ich den so auslese bekomm ich immer einen dezimal wert. und maßstab 0,5 schaut dann doch ziemlich dämlich aus ^^


gruß
martin

------------------
Nimm nie einen Menschen, wenn du eine Maschine dafür nehmen kannst!

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

Thomas Harmening
Ehrenmitglied V.I.P. h.c.
Arbeiter ツ



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

Beiträge: 2897
Registriert: 06.07.2001

NX 10
Win 7

erstellt am: 19. Dez. 2012 15:46    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 geeeSTAR 10 Unities + Antwort hilfreich

wenn dein Massstabfaktor eine Gleitkommazahl ergibt, dann baue einen String draus.

faktor = 0.5
Masstab = "1:" & 1 / faktor

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 19. Dez. 2012 16: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

die idee kam mir auch schon, allerdings müsste ich ja dann eine fall unterscheidung machen wenn faktor größer-gleich bzw kleiner als 1 is...sonst is das ganze j ned universell anwendbar. ich dachte mir nur, dass es da vll einen befehl gibt um code zu sparen...


gruß
martin

------------------
Nimm nie einen Menschen, wenn du eine Maschine dafür nehmen kannst!

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 19. Dez. 2012 16:07    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Zu der Blatt-Nummer:
- Schleife über alle Blätter und dabei das ActiveSheet mit dem Blatt aus der Schleife vergleichen
- der falls du sowieso mit einer Schleife alle Blätter abarbeitest alle Rahmen ausfüllst) hast du über den Zähler schon die Nummer des Blattes
Hinweis: ggf musst du auch Prüfen auch bei der Blattanzahl) ob es sich um ein DetailSheet handelt (2D-Komponenten) vergleiche auch hier

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 19. Dez. 2012 17:15    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

nach der einen oder anderen meinungsverschiedenheit mit dem compiler hab ich mal das zusammengebracht. bei der for schleife für den sheet count dürfte aber was ned stimmen. da schreibt er mir bei jedem blatt eine 2 rein. das -2 kommt daher das ich in meiner vorlage zusätzliche blätter für eigene rahmen etc habe...

Code:

    Dim docDrawing As DrawingDocument
    Set docDrawing = CATIA.ActiveDocument
   
    Dim drwSheets As DrawingSheets
    Set drwSheets = docDrawing.Sheets
   
    ' get active sheet
    Dim shActiveSheet As DrawingSheet
    Set shActiveSheet = drwSheets.ActiveSheet
    .
    .

    ' place number of sheets
    Dim blattanzahl
    blattanzahl = CATIA.ActiveDocument.Sheets.Count - 2
    Set strParam1 = parameters1.Item("Sheets")
    strParam1.Value = blattanzahl
   
    'place scale
    Dim massstab
    Dim tempScale
    Dim tempScale1
    Dim string1 As String
    Dim string2 As String
    Dim string3 As String
    Dim string4 As String
    Dim string5 As String
    Dim string6 As String
    Set drawingSheets1 = docDrawing.Sheets
    Set drawingSheet1 = drawingSheets1.Item("Sheet.1")
    Set drawingViews1 = drawingSheet1.Views
    Set drawingView1 = drawingViews1.Item("Front view")
    massstab = drawingView1.Scale
   
    If massstab > 1 Then
        tempScale = massstab
        string1 = tempScale
        string2 = ":1"
        string3 = string1 & string2
        Set strParam1 = parameters1.Item("Scale")
        strParam1.Value = string3
    Else
        tempScale1 = 1 / massstab
        string4 = "1:"
        string5 = tempScale1
        string6 = string4 & string5
        Set strParam1 = parameters1.Item("Scale")
        strParam1.Value = string6
    End If
   
    ' place sheet number
    Dim j As Integer
    Dim doccount
    doccount = docDrawing.Sheets.Count - 2
   
    For j = 1 To doccount
        If shActiveSheet = docDrawing.Sheets.j Then
            Set strParam1 = parameters1.Item("Sheet")
            strParam1.Value = j
        End If
    Next


zum code. ich weis das es ein wenig umständlich/unübersichtlich is, gesäubert wird erst wenns funktioniert 
wo liegt also da noch der fehler?


gruß
martin

------------------
Nimm nie einen Menschen, wenn du eine Maschine dafür nehmen kannst!

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

Thomas Harmening
Ehrenmitglied V.I.P. h.c.
Arbeiter ツ



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

Beiträge: 2897
Registriert: 06.07.2001

NX 10
Win 7

erstellt am: 19. Dez. 2012 17:16    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 geeeSTAR 10 Unities + Antwort hilfreich

faktor = 0.5

Massstab = MAX(1;faktor*1) &  ":" & MAX(1;1/faktor)

sollte die Fallunterscheidung ersparen.

[Diese Nachricht wurde von Thomas Harmening am 19. Dez. 2012 editiert.]

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 19. Dez. 2012 17:20    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Ohne den Code getestet zu haben würde ich es so probieren (siehe auch Doku):
Code:

For j = 1 To docDrawing.Sheets.Count
        If shActiveSheet = docDrawing.Sheets.item(j) Then
            Set strParam1 = parameters1.Item("Sheet")
            strParam1.Value = j
        End If
Next
Gruß
Bernd

EDIT: Was ist bei dir "strParam1"? Als Parameter macht es nicht unbedingt Sinn (Parameter gelten AFAIK für das ganze Dokument)

------------------
Warum einfach, wenn es auch kompliziert geht.

[Diese Nachricht wurde von bgrittmann am 19. Dez. 2012 editiert.]

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 19. Dez. 2012 17:58    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

hab das jetzt mal getestet. er übernimmt für die blattnummer immer den letzten j wert. und (ich nehm an das is eher ein folgefehler vom ersten) er gibt dem zweiten blatt dieselbe nummer wie dem erste


gruß
martin

------------------
Nimm nie einen Menschen, wenn du eine Maschine dafür nehmen kannst!

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 19. Dez. 2012 18:16    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Wo/Wie trägst du die Blattnummer ein? Grob müsste es so aussehen:
Code:
for I = 1 to oSheets.Count
  Set oSheet = oSheets.item(I)
  Set TextfeldBlattnummer = oSheet.Views.item(2).texts.item("Blattnummer") 'im Blatthintergrund das Textfeld "Blattnummer"
  TextfeldBlattnummer.Text = CStr(I)
next
Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 20. Dez. 2012 14:50    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

was genau ist "oSheet" für ein befehl? wenn ich einen haltepunkt setze und den "wert" von oSheet abfrage steht da leer...


gruß
martin

------------------
Nimm nie einen Menschen, wenn du eine Maschine dafür nehmen kannst!

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 20. Dez. 2012 15:51    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
oSheet ist kein Befehl sondern ein Objekt. (bei dir entspricht dem "oSheets" das Objekt "drwSheets")
Beim ersten Schleifen Durchlauf ist es die erste Seite (Laufvariable, hier "I", für die Seitenzahl)
Der von mir gepostetet Code soll nur de groben Ablauf zeigen, diesen kannst du nicht 1:1 übernehmen (andere Objektnamen).

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

geeeSTAR
Mitglied
Techn. Zeichner


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

Beiträge: 17
Registriert: 27.11.2012

CATIA V5 R21 SP4 auf Win7
DELL Precision T3500
12GB Ram
2GB Nvidia Quadro 4000

erstellt am: 20. Dez. 2012 17:51    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


drw-importprops.zip

 
hey leute,

nach langem kampf is das teil endlich am laufen so wie es das soll. ich habs noch um ein paar nützliche funktionen erweitert. danke aber auf alle fälle für eure hilfe, das nächste mal werd ich auf jeden fall schon mal mehr plan von der ganzen sachen haben 

BTW.: das makro hat ws noch einiges an verbesserungspotential, vor allem was aufbau und strukturierung angeht. das wird dann aber erst irgendwann geändert - hauptsache man kann damit arbeiten.

gruß
martin

------------------
Nimm nie einen Menschen, wenn du eine Maschine dafür nehmen kannst!

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

buecherm83
Mitglied
Ingenieur IT Application Software


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

Beiträge: 78
Registriert: 20.09.2011

SIEMENS NX10
CATIA V5 R26
VB7.1
Tecnomatix Process Designer/Simulate<P>Win7 64bit
Office 2016

erstellt am: 06. Sep. 2013 14:56    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 geeeSTAR 10 Unities + Antwort hilfreich

Hallo,

ich bin das Thema soweit durchgangen und wollte es auf meine Bedürfnisse anpassen. Ich brauche eine Abfrage die Feststellt ob UserRefProperties mit einem bestimmten String vorhanden sind oder nicht. Sind diese Vorhanden sollen diese gelöscht und durch neue ersetzt werden.

Ich wollte hierzu den Code zum auslesen von GeeeStar auf meine UserRefs anpassen. Der Code hierzu sieht bis jetzt folgender Maßen aus:

Sub CATMain()

Dim partDocument1 As Product
On Error Resume Next
Set partDocument1 = CATIA.ActiveDocument
   
If (partDocument1 Is Nothing) Then
    MsgBox "Source Part document not found!", vbCritical
    Exit Sub
End If

Dim ParamWorks As Parameters
Set ParamWorks = partDocument1.UserRefProperties

Dim sMaterial As Parameter
Set sMaterial = partDocument1.getUserProperty(ParamWorks, "TE01")

Dim Box

Box = MsgBox(sMaterial)

End Sub


Ich wollte über eine MsgBox testen ob es funktioniert. Ich bekomme jedoch nur eine leere MsgBox angezeigt. Unter VBA bekomme ich beim Debuggen auch nichts angezeigt.

Könnte Ihr mir helfen?

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 06. Sep. 2013 15:46    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Folgende Fehler hatte dein Code:
- du hast die Fehlbehandlung nicht wieder angeschaltet deshalb hat der Degugger auch keinen Fehler gebracht
- die Funktion "getUserProperty" fehlt in deinem Code
- "getUserProperty" liefert dir den Parameter zurück nicht den Wert
Code:
Sub CATMain()

Dim oProduct As Product
On Error Resume Next
Set oProduct = CATIA.ActiveDocument.Product
 
If (oProduct Is Nothing) Then
    MsgBox "Source Part document not found!", vbCritical
    Exit Sub
End If

On Error GoTo 0

Dim ParamWorks As Parameters
Set ParamWorks = oProduct.UserRefProperties

Dim sMaterial As Parameter
Set sMaterial = getUserProperty(ParamWorks, "TE01")

Dim Box

Box = MsgBox(sMaterial.Value)

End Sub


Function getUserProperty(UserProperties As Parameters, ParameterName As String) As Parameter

Dim I As Integer

For I = 1 To UserProperties.Count
    If Right(UserProperties.Item(I).Name, Len(ParameterName)) = ParameterName Then
        Set getUserProperty = UserProperties.Item(I)
        Exit Function
    End If
Next
End Function


Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

buecherm83
Mitglied
Ingenieur IT Application Software


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

Beiträge: 78
Registriert: 20.09.2011

SIEMENS NX10
CATIA V5 R26
VB7.1
Tecnomatix Process Designer/Simulate<P>Win7 64bit
Office 2016

erstellt am: 09. Sep. 2013 13:16    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 geeeSTAR 10 Unities + Antwort hilfreich

Hallo,

Danke das war mein Fehler.

Jetzt wollte ich eine Abfrage schalten die Prüfen soll ob die UserRefProperties schon vorhanden sind, d. h. ob "TE*" schon angelegt sind. Die Abfrage habe ich wie folgt angelegt:

Sub CATMain()

Dim Product As Product
On Error Resume Next
Set Product = CATIA.ActiveDocument.Product

If (Product Is Nothing) Then
    MsgBox "Source Part Document not found!", vbCritical
    Exit Sub
End If

On Error GoTo 0

Dim ParamWorks As Parameters
Set ParamWorks = Product.UserRefProperties

Dim Merkm01 As Parameter
Set Merkm01 = getUserProperty(ParamWorks, "TE01")

If Merkm01.Value >= 0 Then
    MsgBox (Merkm01.Value)
    Else
    MsgBox "Keine Merkmale vorhanden!", vbCritical
    Exit Sub
End If

End Sub


Function getUserProperty(UserProperties As Parameters, ParameterName As String) As Parameter

Dim I As Integer

For I = 1 To UserProperties.Count
    If Right(UserProperties.Item(I).Name, Len(ParameterName)) = ParameterName Then
        Set getUserProperty = UserProperties.Item(I)
        Exit Function
    End If
Next

End Function


Allerdings ist mir aufgefallen das ich so nur den Wert von "TE*" abfrage und nicht ob "TE*" überhaupt schon vorhanden ist.

Kann mir jemand weiterhelfen stehe grade auf dem Schlauch.

Vielen Dank.

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 09. Sep. 2013 17:38    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus

Du könntest in der Function "getUserProperty" noch einbauen, dass wenn der Parameter nicht vorhanden ist NOTHING zurückgeben wird. Dies lässt sich dann auswerten. (oder gleich die Function erweitern, dass der Parameter angelegt wird?)

Code:
Sub CATMain()

Dim oProduct As Product
On Error Resume Next
Set oProduct = CATIA.ActiveDocument.Product

If (oProduct Is Nothing) Then
    MsgBox "Source Part document not found!", vbCritical
    Exit Sub
End If

On Error GoTo 0

Dim ParamWorks As Parameters
Set ParamWorks = oProduct.UserRefProperties

Dim sMaterial As Parameter
Set sMaterial = getUserProperty(ParamWorks, "TE01")

If sMaterial Is Nothing Then
    MsgBox "Parameter nicht vorhanden"
    Exit Sub
End If

Dim Box

Box = MsgBox(sMaterial.Value)

End Sub


Function getUserProperty(UserProperties As Parameters, ParameterName As String) As Parameter

Dim I As Integer

For I = 1 To UserProperties.Count
    If Right(UserProperties.Item(I).Name, Len(ParameterName)) = ParameterName Then
        Set getUserProperty = UserProperties.Item(I)
        Exit Function
    End If
Next

Set getUserProperty = Nothing

End Function


Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

buecherm83
Mitglied
Ingenieur IT Application Software


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

Beiträge: 78
Registriert: 20.09.2011

SIEMENS NX10
CATIA V5 R26
VB7.1
Tecnomatix Process Designer/Simulate<P>Win7 64bit
Office 2016

erstellt am: 10. Sep. 2013 15:45    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 geeeSTAR 10 Unities + Antwort hilfreich

Danke so funktionierts.

ich habe es auch so erweitert, wenn die Parameter nicht vorhanden sind diese eingetragen werden und wenn alte Parameter vorhanden sind, diese gelöscht werden.

Jedoch bin ich am überlegen wie die Schleife aufgebaut werden muss, damit ich nach dem remove-Befehl die neuen Parameter eintragen kann.

Sub CATMain()

Dim oProduct As Product
On Error Resume Next
Set oProduct = CATIA.ActiveDocument.Product

If (oProduct Is Nothing) Then
    MsgBox "Source Part document not found!", vbCritical
    Exit Sub
End If

On Error GoTo 0

Dim ParamWorks As Parameters
Set ParamWorks = oProduct.UserRefProperties

Dim sMaterial As Parameter
Set sMaterial = getUserProperty(ParamWorks, "TE01")

If sMaterial Is Nothing Then
    MsgBox "Parameter nicht vorhanden"
    -
    -
    - BEFEHLE ZUM EINFÜGEN
    -
    -
    Exit Sub
    Else
    ParamWorks.Remove "PR-Nr."
    ParamWorks.Remove "TE01"
End If


End Sub


Function getUserProperty(UserProperties As Parameters, ParameterName As String) As Parameter

Dim I As Integer

For I = 1 To UserProperties.Count
    If Right(UserProperties.Item(I).Name, Len(ParameterName)) = ParameterName Then
        Set getUserProperty = UserProperties.Item(I)
        Exit Function
    End If
Next

Set getUserProperty = Nothing

End Function

Grüße

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Sep. 2013 16:05    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Warum willst du die Parameter löschen (obwohl du davor ihn direkt anlegst)?
Wann soll welcher Parameter gelöscht werden und wann soll welcher Parameter angelegt werden?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

buecherm83
Mitglied
Ingenieur IT Application Software


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

Beiträge: 78
Registriert: 20.09.2011

SIEMENS NX10
CATIA V5 R26
VB7.1
Tecnomatix Process Designer/Simulate<P>Win7 64bit
Office 2016

erstellt am: 11. Sep. 2013 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 geeeSTAR 10 Unities + Antwort hilfreich

Guten morgen,

zum löschen. Es kann sein, das ältere Bauteile den Parameter besitzen, dieser sich aber nach einer Aktualisierung verändert hat. Aus diesem Grund möchte ich ihn löschen oder überschreiben.

Grundsätzlich sollen alle ältere und zukünftige Bauteile diese Parameter in den UserRefProperties besitzen.
Das Neuanlegen ist ja auch kein Problem, die Frage ist nur wenn eine Aktualisierung stattgefunden hat.

Grüße

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 11. Sep. 2013 08:43    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 geeeSTAR 10 Unities + Antwort hilfreich

Servus
Du kannst doch einfach jeden Parameter mit "getUserProperty" abfragen, falls vorhanden neuen Wert zuweisen. Falls nicht vorhanden,Parameter anlegen und Wert Zuweisen

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

buecherm83
Mitglied
Ingenieur IT Application Software


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

Beiträge: 78
Registriert: 20.09.2011

SIEMENS NX10
CATIA V5 R26
VB7.1
Tecnomatix Process Designer/Simulate<P>Win7 64bit
Office 2016

erstellt am: 12. Sep. 2013 09:15    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 geeeSTAR 10 Unities + Antwort hilfreich

Hallo,

vielen Dank. Hatte echt auf dem Schlauch gestanden. Es läuft jetzt einwandfrei!

Gruß

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