Cartridge coördinaten via VBA

Hallo

Laat me mijn probleem voorleggen:

Na een mislukt onderzoekswerk vraag ik uw hulp om via VBA de coördinaten (x,y) van het patroonelement van deze tekening te kunnen verkrijgen.

Het startbestand is een dxf geïmporteerd via SolidWorks 2012.

Bij voorbaat dank voor uw antwoorden.

 


image_1.png

Hallo

Wat heb je tot nu toe met je macro kunnen doen?

 

Hier is een macro waarmee u een "get" kunt maken op elk van de entiteiten van een tekening en vervolgens een debug.print van zijn naam kunt maken:

http://help.solidworks.com/2012/English/api/sldworksapi/Get_All_Visible_Components_in_Drawing_View_Example_VB.htm

Vervolgens, wanneer u op het juiste element bent gepositioneerd (afhankelijk van wat de debug.print op elke regel met een ALS weergeeft), hoeft u alleen maar de positie op te halen door inspiratie te putten uit de macro's die hier worden voorgesteld:

https://forum.solidworks.com/thread/60386

 

1 like

Bedankt PL voor deze snelle feedback! 

Om eerlijk te zijn, heb ik geprobeerd een aantal macro's op internet te gebruiken, maar het mocht niet baten. 

Mijn persoonlijke macro ligt stil door gebrek aan voldoende kennis.

Bij het gebruik van  de twee macro's die je hebt gekoppeld, krijg ik de volgende foutmeldingen:

Macro 1 koppelen :

Fout in:

'Krijg alle zichtbare componenten in de weergave

vComps = swView.GetVisibleComponents

/sites/default/files/from_ckeditor/macro1.png

Link macro n°2 :

Op het niveau van de 5e lijn van de macro wijzer :

Stel swSketch in = swView.GetSketch

Runtime Error 91 Objectvariabele of Met blokvariabele niet gedefinieerd.

/sites/default/files/from_ckeditor/macro2_1.png

/sites/default/files/from_ckeditor/macro2_2.png

Bedankt voor je hulp!

De eerste link was niet goed, kijk zo:

http://help.solidworks.com/2016/English/api/sldworksapi/Get_Title_Block_Tables_Example_VBNET.htm

Maar wat is je niveau in VBA?

1 like

Ik ben bedreven in Excel, Powerpoint en Outlook, maar ik ben niet bekend met Solidworks.

Allereerst heb ik de volgende instructies in het rood, dus in pirori, onjuist: 

Gedeeltelijke klasse SolidWorksMacro

Einde les

Bij het activeren van de macro verschijnt er een foutmelding in de eerste regel:

Compilatiefout: Een onjuiste opgave buiten een procedure om.

Hebben we het over een macro gelanceerd vanuit SolidWorks?

Als dat het geval is, kun je de klassen ontslaan, ik denk dat het nutteloos is

1 like

Ok dat is gedaan, maar het probleem blijft bestaan op het niveau van:

SolidWorks importeert. Interop.SldWorks

Het bugs op de SolidWorks vetgedrukt hierboven met de foutmelding  :

Compilatiefout: Een onjuiste opgave buiten een procedure om.

Enig idee over de oorsprong van het probleem?

Kunt u uw code in een txt-bestand als bijlage op Lynkoa zetten?

1 like

Hier is de code


code.txt

Welke link heb je daaruit gehaald?

Omdat ik denk dat er een fout in de laatste regel staat:   

Openbare swApp als SldWorks

Het zou niet op deze plek moeten zijn.

1 like

Ik heb het overgenomen van de laatste link die je me stuurde: 

 

De eerste link was niet goed, kijk zo:

http://help.solidworks.com/2016/English/api/sldworksapi/Get_Title_Block_...

Maar wat is je niveau in VBA?

Uw code is niet VBA maar VB.net.

Het kan niet werken...

Tot ziens.

1 like

Dat verklaart een hoop dingen.

In dit geval zit ik echt in een impasse.

Als iemand een idee heeft, zijn ze welkom.

 

Ja, de laatste link is van de VB.NET aan te passen om deze aan te passen, daarom heb ik je om je niveau gevraagd.

VB.NET en VBA zijn twee talen die vrij dicht bij elkaar liggen, maar niet compatibel zijn.

1 like

Het voorbeeld is ook beschikbaar in VBA: http://help.solidworks.com/2016/english/api/sldworksapi/get_title_block_tables_example_vb6.htm

1 like

Nou, ik heb geprobeerd het einde van de URL te vervangen door VB in plaats van VB6 ...

Hartelijk dank voor uw hulp.

Ik heb de vba-code gebruikt die in de link staat, maar er verschijnt een foutmelding op het niveau van  :

 Stel prestatie in = tbtAnno.TitleBlockTableFeature

Foutmelding : Runtime-fout 91 objectvariabele of met blokvariabele niet gedefinieerd.

Twee korte vragen:

Heeft u een achtergrond waar uw cartridge zich bevindt of staat deze direct op de kaart? Kun jij het selecteren?

Is het voor u mogelijk om de cartridge te selecteren met de muis aan de voorkant of wilt u de coördinaten zonder tussenkomst van de gebruiker?

 

Kortom, wat heeft het voor zin?

De plannen worden geëxtraheerd uit DXF's die op een andere software zijn gemaakt.

Er is geen achtergrond. Ik kan eigenlijk het titelblok selecteren.

Het doel is om automatisch een afbeelding toe te voegen aan het titelblok op een reeks bestanden die vanwege hun verschil in grootte geen gemeenschappelijke lay-out hebben.

Daarom zou ik graag willen weten hoe ik de coördinaten van het titelblok (of meer in het algemeen van een element) kan verkrijgen zonder tussenkomst van de gebruiker en in de context van een tekening.

Dank u voor uw hulp.