Ik kan de methode GetLastFeatureAdded niet gebruiken.
Hier is mijn code die ik gebruik om een holtefunctie in te voegen in een bewerkt onderdeel in een assembly!
boolstatus = swModel.Extension.SelectByID2("" & Naam & "@Simulateur", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) 'Het onderdeel selecteren waarvoor ik de vingerafdruk wil swAssy.InsertCavity4 0.4, 0.4, 0.4, True, 1, -1 'Het maken van de vingerafdrukfunctie.
Dan wil ik deze functie hernoemen naar vingerafdruk. Want voor de toekomst wil ik zeker zijn van de naam van de functie. Neem niet het risico dat de afdruk een hit "Afdruk1" wordt genoemd en vervolgens "Afdruk 3" enz. enz. Dus ik gebruik de methode: GetLastFeatureAdded en hernoem dan de functie.
Ik heb de volgende variabelen aangegeven:
Dim swFeat als SldWorks.Feature
Dim swModExt als SldWorks.ModelDocExtension
Dan voer ik de methode uit:
set swFeat = swModExt.GetLastFeatureAdded
En het vertelt me dat de objectvariabele niet wordt gedeclareerd. Ik begrijp niet echt waar mijn fout of mijn onoplettendheid zit.
Ik denk aan hetzelfde als d.roger. Zie om Set swModExt = swModel.Extension toe te voegen voordat u swFeat instelt
De eenvoudigste manier om dit te doen is om het te definiëren na een regel die van het type moet zijn Set swModel = swApp.ActiveDoc en het te gebruiken vanuit boolstatus = swModExt.SelectbyID2.....
Dit is precies waar de volledige code interessant is, want zonder dat kun je te veel aannames doen.
- Uw variabele "swModExt" is goed geïnitialiseerd, ja, maar in relatie tot wat? Uw deel bewerkt in de assemblage of uw hoofdassemblage? de aanroep naar de "ModelDoc2" is helemaal niet hetzelfde, afhankelijk van het niveau van de component die u wilt openen.
- Afhankelijk van hoe u toegang krijgt tot uw deel van uw assemblage, kunnen we ons ook afvragen of uw onderdelen allemaal in de opgeloste modus staan? En zo niet, is de foutafhandeling voltooid (zo niet "Runtime-fout 91: objectvariabele of blokvariabele met niet gedefinieerd")?