Indeling

Hallo

Ik heb een tekenmodel waarop een vooraanzicht van een flens te zien is. Om het vooraanzicht weer te geven, moet ik het onderaanzicht van de flens selecteren.
Ik wil, via een macro, de configuratie van deze weergave wijzigen (het is de DN die verandert).

De macrorecorder geeft me een code die werkt, maar wanneer ik de macro de eerste keer uitvoer, maakt het een configuratie die eindigt met "-SM-FLAT-PATTERN" en ik word gedwongen om het een tweede keer uit te voeren om de configuratie te wijzigen (het geeft de configuratie weer die bij de eerste run is gemaakt).

Ik heb geen zin om nieuwe configuraties te maken en de macro één keer uit te voeren.

Hieronder vindt u de verkregen code:

Dim swApp als object

Deel dimmen als object
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long

Sub hoofd()

Stel swApp in = _
Toepassing.SldWorks

Deel instellen = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Tekening1", "TEKENING", 0.267271785970659, 0.323684671386922, 0, Onwaar, 0, Niets, 0)
boolstatus = Part.ChangeRefConfigurationOfFlatPatternView("O:\FJS flens type11B ASA300. SLDPRT", "DN040")
Deel.ClearSelection2 Waar
Einde Sub

Dank u voor uw hulp.

 

Hallo

Wat is de DN in de zin "het is de DN die verandert"?

Moet je het op veel niveaus doen? Heeft de weergave nog steeds dezelfde naam en de configuratie ook?

Edit: in feite komt de DN overeen met de verschillende configuraties

.PL

De DN komt overeen met de diameter van de flens.

Ja, ik probeer deze functie te automatiseren omdat het op veel niveaus moet worden gedaan door mijn collega's en mijzelf. De weergave heeft nog steeds dezelfde naam, maar de configuratie is gewijzigd. Ik voeg een afbeelding van de configuraties toe.
Ik wil de configuratie wijzigen op basis van de waarde van de DN.

 

Ik heb een code gevonden die werkt, maar vraagt welke configuratie ik wil weergeven, maar ik zou graag willen dat dit automatisch wordt gedaan volgens de waarde van de DN (ik krijg deze waarde in een Excel-bestand):

  •  Sub ChangeRefConfig()  
  • Dim myApp als SldWorks.SldWorks  
  • Stel myApp in = Application.SldWorks  
  • Dim myDraw als DrawingDoc  
  • Stel myDraw in = myApp.ActiveDoc  
  • Dim myView als weergave  
  • Stel myView = myDraw.ActiveDrawingView  in
  • Dim myModel als ModelDoc2  
  • Stel myModel = myView.ReferencedDocument  in
  • Dim msg als snaar  
  • msg = "Selecteer de configuratie om naar te wijzigen voor weergave " & myView.Name & vbCrLf  
  • Voor i = 0 TB UBound(myModel.GetConfigurationNames)  
  •     msg = msg & i + 1 & vbTab & myModel.GetConfigurationNames(i) & vbCrLf  
  • Volgend  
  • X = InputBox (msg, "Selecteer configuratie", 1)  
  • Dim config als string  
  •  config = myModel.GetConfigurationNames(X - 1)  
  • myView.ReferencedConfiguration = configuratie  
  • myDraw.ForceHerbouw  
  • MsgBox "Klaar"  
  • Einde Sub

configurations.png

Hallo

in feite creëert het  een plaatwerkconfiguratie  in ongevouwen versie, vandaar de naam "-SM-FLAT-PATTERN" en, om te antwoorden op PL, is de DN de nominale diameter van de flens. Misschien het hoofdstel en het plaatwerk en daarom maakt ze de versie met plat patroon voor jou.

DN = Nominale diameter van een buis die wordt gebruikt in leidingen en dus op een DN100, DN 200 flens, ....

 

@manu67,

 

Ik begrijp niet waarom het een plaatwerkconfiguratie creëert, omdat het onderdeel is gemaakt als een volumelichaam...

Ik ben op zoek naar de functie "ShowConfiguration2" omdat deze functie wel in 3D werkt, maar niet in tekenen.

Hieronder vindt u de code voor de 3D:

Dim swApp als object

Deel dimmen als object
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long

Sub hoofd()

Stel swApp in = _
Toepassing.SldWorks

Deel instellen = swApp.ActiveDoc
myModelView dimmen als object
Stel myModelView = Deel.ActiveView in
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.Extension.SelectByID2("DN300@Bride FJS type11B ASA300. SLDPRT", "CONFIGURATIES", 0, 0, 0, Onwaar, 0, Niets, 0)
boolstatus = Deel.ShowConfiguration2("DN050")
Einde Sub

 

Kan iemand mij helpen om het aan te passen aan de tekening?

Kijk in de code van je vraag, de 4e regel van onderen heb je:                                                                                                                                                                       "boolstatus = Part.ChangeRefConfigurationOfFlatPatternView("O:\FJS Bride " Ik denk dat dit deel van de code moet worden gewijzigd of verwijderd, zodat het niet langer de flatpattern-versie maakt

 

Ik heb al geprobeerd deze regel te bewerken, maar ik krijg een foutmelding.

Mijn onderzoek in de SolidWorks API-hulp heeft me ook niet vooruit gebracht.

Probeer deze eens:

 

Dim swApp als object

Deel dimmen als object
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long

Sub hoofd()

Stel swApp in = _
Toepassing.SldWorks

Deel instellen = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Tekening1", "TEKENING", 0.267271785970659, 0.323684671386922, 0, Onwaar, 0, Niets, 0)
boolstatus = Part.ChangeRefConfigurationOfDefaultView("O:\FJS flens type11B ASA300. SLDPRT", "DN040")
Deel.ClearSelection2 Waar
Einde Sub

Deze code zou moeten werken:

Stel swView = swDraw.IGetFirstView in

Doen
    Stel swView in = swView.GetNextView
    Als swView niets is, sluit dan Do af
    swView.ReferencedConfiguration =  ConfigName

Strik

 

Hoi allemaal

Dank u manu67 en .PL voor uw antwoorden.

Ik heb beide codes geprobeerd, maar geen van beide werkte.

Voor de code van manu67 zit de fout in de regel boolstatus = Part.ChangeRefConfigurationOfDefaultView("O:\FJS flens type11B ASA300. SLDPRT", "DN040". De weergegeven fout is: "Runtime-fout '438': eigenschap of methode wordt niet afgehandeld door dit object"

Voor de .PL code zit de fout in de regel Set swView = swDraw.IGetFirstView: "Runtime error '424':  object required. Ik heb geprobeerd de variabele ConfigName te declareren, maar de fout is hetzelfde:

Dim ConfigName als tekenreeks
ConfigName = "DN040"

swDraw avant, essaye ceci :

Set swDraw = swApp.ActiveDoc

Stel swView = swDraw.IGetFirstView in

Dim ConfigName als tekenreeks
ConfigName = "DN040"

Doen
    Stel swView in = swView.GetNextView

    If swView.GetName2 = "Tekening aanzicht1" then
    swView.ReferencedConfiguration =  ConfigName

    Eindigen als

Strik

Het probleem is er nog steeds.

Hieronder vindt u de verkregen code:

Sub hoofd()

Dim ConfigName als variant

Dim swView As IView
Dim swDraw als IDrawingDoc
Stel swDraw = swApp.ActiveDoc in
Stel swView = swDraw.IGetFirstView in

Doen
    Stel swView in = swView.GetNextView
    Als swView niets is, sluit dan Do af
    swView.ReferencedConfiguration = ConfigName

Strik

Einde Sub

domme vraag sorry ;-(

Heb je een familie van onderdelen gemaakt voor je verschillende hoofdstellen?

en opslaan in een specifieke persoonlijke bestanden en biblio buiten de SW-bibliotheek 

Waarom een persoonlijke bibliotheek?

om uw bibliotheken te kunnen behouden wanneer u de SW-versie wijzigt

@+ ;-)

GT22,

Ja, de verschillende configuraties worden beheerd in een familie van onderdelen en ze worden opgeslagen in een specifieke map buiten SolidWorks.

 

Maar dat beantwoordt mijn vraag niet...

Ik heb de oplossing voor mijn probleem gevonden. Ik heb de code hieronder gezet:

Sub ChangeRefConfig()
Dim myApp als SldWorks.SldWorks
Stel myApp in = Application.SldWorks
Dim myDraw als DrawingDoc
Stel myDraw in = myApp.ActiveDoc
Dim myView als weergave
Stel myView = myDraw.ActiveDrawingView in
Dim myModel als ModelDoc2
Stel myModel = myView.ReferencedDocument in
Dim msg als snaar
myView.ReferencedConfiguration = "DN125"
myDraw.ForceHerbouw
MsgBox "Klaar"
Einde Sub

Tussen aanhalingstekens typ ik de naam van de configuratie die ik wil en de macro wijzigt de configuratie in de tekening

Fijne dag