• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

eine Modell-Eigenschaft aus Zeichnung mit Makro lesen

  • Ersteller Ersteller claudio71
  • Erstellt am Erstellt am

claudio71

Guest
guten morgen.
ich mache ein bestimmtes makro und ich müsste eine benutzerdefinierte eigenschaft, die im modell vorhanden ist, aber ausgehend von der relativen gestaltung erkennen.

ich kann die des designs erkennen, aber nicht das modell.
ich beziehe mich nicht auf die verwendung der verschiedenen $prpsheets: "revision"..., sondern auf makroebene.

ich hoffe, dass es geklärt wird
swx2008 sp.3
hi.
 
bye to all,
es ist ein bisschen zeit, dass ich nicht im forum auftauche und ich bin nicht sehr stolz darauf, aber ich wollte ihnen eine alternative lösung für die klassiker anbieten:

mit swexplorer bienen haben sie zugriff auf alle komponenteninformationen, wie benutzerdefinierte eigenschaften, externe referenzen etc.

unten sie decken den code in swexplorer bienen, die sie haben zugang zu den modellinformationen und die eigenschaften der aktiven konfiguration.
der einzige nachteil ist, dass sie zum ersten mal ein makro mit swexplorer bienen entwickeln sollten, geben sie ihrem händler die "schlüssellizenzen", die sie jedes mal tragen, in der makro-string.
die lizenz ist kostenlos.
der string, wo die lizenz eingegeben werden soll, ist:

set tapp = classfac.getapplication("your_license_key") ' geben sie ihren lizenzschlüssel an

und das ist das beispiel:

dieses beispiel zeigt, wie man benutzerdefinierte eigenschaftswerte mit dem solidworks document manager api erhält und gesetzt.



----------------------------------------------------------------------------------------------------------------------

'

voraussetzung: e:\2005\linkedprop_st\linkedproptest.sldprt existiert

'

' postkonditionen: mymass und mysize benutzerdefinierte immobilienwerte werden geändert

'

----------------------------------------------------------------------------------------------------------------------

option explizit

dim swdocmgr als swdocumentmgr.swdmapplication

dim swdoc als swdocumentmgr.swdmdocument

dim vextrefarr als variante

dim vextref als variante

dim nretval as long

dim tapp als swdmapplication



teil haupt()

auf fehler goto fehlerhandler

dim classfac als swdocumentmgr.swdmclassfactory

set classfac = createobject("swdocumentmgr.swdmclassfactory")

set tapp = classfac.getapplication("your_license_key") ' geben sie ihren lizenzschlüssel an

dim d_2005 als swdmdocument3

dim s1 als string



dim und so lange

dim proptype als lang



dim pfad als string

pfad = "e:\2005\linkedprop_st\"

d_2005 = tapp.getdocument("e:\2005\linkedprop_st\linkedproptest.sldprt", swdmdocumentpart, true, e)

dim v als variante

v_2005.getcustompropertynames

debug.print 'param string: ' & d_2005.getcustomproperty('mymass', proptype)

debug.print 'value: ' & d_2005.getcustompropertyvalues('mymass', proptype, s1)

''note, sie können auch die param-string aus

'''swdmdocument3::gebrauchswerte oder

''swdmconfiguration4::getcustompropertyvalues linkedto parameter (s1)

debug.print 'param string: ' & s1

debug.print '

debug.print 'param string: ' & d_2005.getcustomproperty('doclevelnl', proptype)

debug.print 'value: ' & d_2005.getcustompropertyvalues('doclevelnl', proptype, s1)



dim c als swdmconfiguration4

c = d_2005.configurationmanager.getconfigurationbyname("config_h1")

dim v2 als variante

v2 = c.getcustompropertynames



debug.print "param string: " & c.getcustomproperty("mydimension", proptype)

debug.print "value: " & c.getcustompropertyvalues("mydimension", proptype, s1)

debug.print "param string: " & c.getcustomproperty("configlevelnl", proptype)

debug.print "value: " & c.getcustompropertyvalues("configlevelnl", proptype, s1)



c = d_2005.configurationmanager.getconfigurationbyname("config_h3")

debug.print "param string: " & c.getcustomproperty("mydimension", proptype)

debug.print "value: " & c.getcustompropertyvalues("mydimension", proptype, s1)





d_2005.setcustomproperty "mymass", "new non-linked value"

debug.print "param string: " & d_2005.getcustomproperty("mymass", proptype)

debug.print "value: " & d_2005.getcustompropertyvalues("mymass", proptype, s1)



c.setcustomproperty "mydimension", "neuer unverlinkter wert, cs"

debug.print "param string: " & c.getcustomproperty("mydimension", proptype)

debug.print "value: " & c.getcustompropertyvalues("mydimension", proptype, s1)



d_2005.closedoc

d_2005 = nichts

tapp = nichts

set classfac = nichts

ende




ich schlage diese lösung vor, weil ich bemerkte, dass es viel einfacher ist, zugriff auf daten zu haben, und ich habe anwendungen implementiert, um verschiedene materialien mit geschlossenem s zu erzeugen.

hi roberto
 
danke roberto für die gerade... ich mache beweise, aber ich verstecke nicht, dass ich lieber in die software mit makro gehen würde.

hi.
 
hi.
ich versuchte herauszufinden, wie ich ihnen helfen konnte und ich kam zu schlussfolgerungen (in den grenzen meiner fähigkeiten), die ich mit ihnen teilen wollte.
als konzept hat der solidworks-nutzer nicht die möglichkeit, direkten zugriff auf die benutzerdefinierten eigenschaften des modells zu haben, wenn es sich innerhalb der tabelle befindet, außer durch die variablen "$prp:".
scheint, dass nur pdms erlauben sie zu kopieren, bearbeiten usw. kundenspezifische eigenschaften von tisch zu modell und umgekehrt (durch verwendung, absorbieren auf der einen seite und setzen auf der anderen).
der teil des codes, den ich zuvor geschrieben hatte, diente dazu, dies zu tun, als mittel.
in der hoffnung, so viel wie sie brauchen erhalten haben, schrieb ich ein makro, das ihnen erlaubt, aus dem modell den wert der benutzerdefinierten eigenschaft erforderlich, klar ist das makro blüht, aber funktioniert.
in diesem makro ich habe den wert des benutzerdefinierten immobiliennamens zurückgezogen.

das makro ist wie folgt:


dim swapp als objekt
dim teil objekt
dim selmgr als objekt
dim boolstatus als boolean
dim longstatus so lang, langwarnings as long
dim merkmal objekt
teil haupt()

dim swdraw als sldworks.drawingdoc
dim swview als sldworks. blick
dim swnote as sldworks. anmerkung
dim swann as sldworks. anmerkung
dim swmodel als sldworks.modeldoc2
dim eigenschaft als string
dim bret als boolean

set swapp = anwendung. schalungen

set part = swapp.activedoc
selmgr = part.selectionmanager

dimnote als objekt
dim-annotation als objekt
dim textformat als objekt
anmerkung gesetzt = part.insertnote("$prp:"denomination""$prpsheet:"denomination"")

wenn nicht bekannt ist nichts
anmerkungen.angle = 0
boolstatus = notes.setballoon(0, 0)
annotation einstellen = anmerkung.

eigenschaften = note.gettext

msgbox "der wert des benutzerdefinierten immobiliennamens im modell hat wert: " & immobilien

"die aktivierung dieses zweiten teils in der tabelle ist eine notiz geschrieben

wenn keine anmerkung ist nichts dann
' longstatus = anmerkung. setleader2(false, 0, wahr, falsch, falsch, falsch)
boolstatus = annotation.setposition(0.2461175510748, 0.08756118516563, 0)
' boolstatus = annotation.settextformat(0, true, textformat)

ende, wenn
ende


ende


wie sie durch aktivierung des zweiten teils des codes bemerken können, sehen sie auf der tabelle eine notiz mit dem wert der gewünschten eigenschaft.
an diesem punkt können sie es zu ihren bedürfnissen entwickeln.

lassen sie mich wissen, ob es ihnen helfen kann, wenn sie brauchen, ich werde ihnen gerne helfen.

hi.
 

Anhänge

zeig! danke, roberto, es ist toll.

ich frage dich noch was. ich habe gesehen, dass auch ohne den letzten teil 'relegate' zu kommentieren ohnehin ein text eingefügt wird. gibt es einen weg, ihn zu vermeiden oder nach dem einfügen zu löschen (wenn es gut verstanden wird, ist es notwendig, ihn einzufügen, um den wert zu füllen)?

danke.
hi.
 
ich habe eine schnelle collage von beispielen, die auf der bienenhilfe von solidworks vorhanden ist, gemacht, ist das makro, das allego.
durch anklicken der designansichten werden die eigenschaften des modells wiederhergestellt, während sie auf die komponenten der fm klicken, werden sie die eigenschaften der komponenten in der referenzierungskonfiguration wiederhergestellt. die maske bleibt aktiv, so dass sie die ausgewählten komponenten ändern können und durch anklicken des refresh-buttons die eigenschaften geladen werden, wenn die komponente aufgelöst wird.
eine änderung des makros kann auch in der montageumgebung verwendet werden und sie können die eigenschaften (funktion seit 2009 implementiert) weiter vertiefen.
ich habe auch das makro mit den 2004 und späteren versionen getestet.
 

Anhänge

  • comp_drawing.zip
    comp_drawing.zip
    35,1 KB · Aufrufe: 41
  • 710000000_004.jpg
    710000000_004.jpg
    171,4 KB · Aufrufe: 73
Zuletzt bearbeitet:
ich hänge das modifizierte makro an, damit der text gelöscht wird.
es ist jedoch ratsam, auf das blatt zu klicken, bevor es gestartet wird, so dass der text nicht in eine ansicht geht, sonst löschen sie die ansicht auch.
der text ist automatisch genug, um den text an einem punkt abseits der ansichten über:
boolstatus = annotation.setposition(2, 2, 0)

hi.
 
hallo, alle! zufällig gibt es einen glossar, der hilft, die ausdrücke der benutzerdefinierten eigenschaften auszufüllen (ich verstehe die strings, die werte den verschiedenen feldern zuordnen, wie z.b. für die masse, das trägheitsmoment etc....); ich müsste den dateinamen automatisch in den benutzerdefinierten eigenschaften für pio erscheinen lassen, um ihn im warenkorb zu erinnern. hilfe!
 
Hi.
die "Strings" (variable) die Sie zur Verfügung haben, sind diese:

$prp: "sw-autor"
$prp: "sw-comments"
$prp: "sw-created dates"
$prp: "sw-file name"
$prp:"sw-folder name"
$prp: "w-keywords"
$prp: "sw-last gespeichert von"
$prp: "sw-last gespeichertes Datum"
$prp:"sw-kurze Termine"
$prp: "sw-subject"
$prp: "sw-title"

was dienten ein te zum reuperate der Dateiname ist $prp:"sw-file name".

Hi.
 
hallo, alle.
ich habe das makro heruntergeladen Info_parte_in_tavola.swp und ich versuchte, es zu ändern, um die benutzerdefinierte eigenschaft zu extrahieren, an der ich interessiert war. schon gut!
ich schaffte es, das makro zu ändern, um aus dieser eigenschaft zu extrahieren (beschreibung), zwei weitere werte, die ich benutzerdefinierte eigenschaften im warenkorb zuordnen möchte.

beispiel:
die eigenschaftsbeschreibung hat den wert "flangia - sekundärzylinder"
dann "flangia" extrahieren und dem wert einer eigenschaft und "sekundärzylinder" einer anderen eigenschaft zuordnen, indem sichergestellt wird, dass diese beiden werte die jeweiligen im knorpel vorhandenen und zuvor eingestellten eigenschaften erfüllen.

ich hoffe, dass ich in der exposition des problems klar sein kann und danke ihnen für die hilfe.

alex
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben