Produkt: AutoCAD 2006
Datum: 15.07.2005
Stáhnout VBA projekt (5 KByte)
Ukázková funkce fixDIVIDE ilustruje použití výběrové množiny AutoCADu ve VBA, použití příkazů bez ActiveX rozhraní (např. Divide, Measure, Explode) a kombinace VBA+LISP. Funkce se dotáže na výběrovou množinu (musí být ve výkresu jedinečná, takže při každém použití původní množinu maže) a poté pro všechny objekty vybrané uživatelem volá příkaz DĚLÚ (_DIVIDE). Protože tento příkaz nemá objektové rozhraní, je vyvoláván funkcí SendCommand. Příkaz očekává zadání objektu jako entity, tedy včetně bodu ukázání. To lze ve VBA nasimulovat předáním entity převedené např. z Handle objektu. K tomu je zde použita LISP funkce (handent).
Funkci lze použít pro rozdělení vybraných objektů na pevný (popř. zadaný) počet úseků (popř. ji upravit na délku úseku náhradou volané funkce na _MEASURE), volitelně s vložením bloku.
Pro přenesení VBA kódu funkce si pomocí Alt-F11 spusťte editor VBA a zkopírujte si tento jednoduchý kód (nebo si otevřete přiložený projekt .DVB):
SubfixDIVIDE()DimselectionSetAsAcadSelectionSetDimentityAsAcadEntityDimeHandleAs StringDimstr1As StringDimcmdstrAs String'To see the divided POINTsThisDrawing.SetVariable "PDMODE", 2'Delete the selection set if already existsFor EachselectionSetInThisDrawing.SelectionSetsIfselectionSet.Name = "forDIVIDE"ThenselectionSet.DeleteExit ForEnd IfNextselectionSet Set selectionSet = ThisDrawing.SelectionSets.Add("forDIVIDE") selectionSet.SelectOnScreenFor EachentityInselectionSet eHandle = entity.Handle str1 = "(handent """ + eHandle + """" + ")" cmdstr = "_DIVIDE "' if you want to DIVIDE using Block "myblock" use this version of cmdstr' cmdstr = cmdstr & str1 & vbCr & "_blo" & vbCr & "myblock" & vbCr & "_Yes" & vbCr & "10" & vbCrcmdstr = cmdstr & str1 & vbCr & "10" & vbCr ThisDrawing.SendCommand (cmdstr)NextMsgBox ("Selected objects were DIVIDEd.")End Sub
Nyní již jen musíme vyvolat nově vytvořenou funkci. Ve spuštěném AutoCADu stiskněte Alt-F8 a v seznamu maker zvolte fixDIVIDE. Pro automatické spuštění lze využít např. příkaz APLČTI (_APPLOAD) a příkaz -VBARUN.
Copyright © 2005 CAD Studio a.s.