(vlax-dump-object(vla-get-ActiveDocument(vlax-get-acad-object))t)
按F2键,获得Mechanical 2000文档的属性和方法的长列表,如下图所示(来自plane 2008)。
Command: (vl-load-com)
Command: (vlax-dump-object(vla-get-ActiveDocument(vlax-get-acad-object))t)
; IAcadDocument: An AutoCAD drawing
; Property values:
; Active (RO) = -1
; ActiveDimStyle = #<VLA-OBJECT IAcadDimStyle 0785c98c>
; ActiveLayer = #<VLA-OBJECT IAcadLayer 0785c9dc>
; ActiveLayout = #<VLA-OBJECT IAcadLayout 0785c89c>
; ActiveLinetype = #<VLA-OBJECT IAcadLineType 0785c93c>
; ActiveMaterial = #<VLA-OBJECT IAcadMaterial 0785c84c>
; ActivePViewport = AutoCAD: No active viewport in paperspace
; ActiveSelectionSet (RO) = #<VLA-OBJECT IAcadSelectionSet 0784fb1c>
; ActiveSpace = 1
; ActiveTextStyle = #<VLA-OBJECT IAcadTextStyle 0785ca2c>
; ActiveUCS = AutoCAD: Null object ID
; ActiveViewport = #<VLA-OBJECT IAcadViewport 0785ca7c>
; Application (RO) = #<VLA-OBJECT IAcadApplication 00d73d3c>
; Blocks (RO) = #<VLA-OBJECT IAcadBlocks 0785cacc>
; Database (RO) = #<VLA-OBJECT IAcadDatabase 0784fbdc>
; Dictionaries (RO) = #<VLA-OBJECT IAcadDictionaries 0785cb1c>
; DimStyles (RO) = #<VLA-OBJECT IAcadDimStyles 0785cb6c>
; ElevationModelSpace = 0.0
; ElevationPaperSpace = 0.0
; FileDependencies (RO) = #<VLA-OBJECT IAcadFileDependencies 02105024>
; FullName (RO) = ""
; Groups (RO) = #<VLA-OBJECT IAcadGroups 0785cbbc>
; Height = 776
; HWND (RO) = 66802
; Layers (RO) = #<VLA-OBJECT IAcadLayers 0785cc0c>
; Layouts (RO) = #<VLA-OBJECT IAcadLayouts 0785cc5c>
; Limits = (0.0 0.0 420.0 297.0)
; Linetypes (RO) = #<VLA-OBJECT IAcadLineTypes 0785ccac>
; Materials (RO) = #<VLA-OBJECT IAcadMaterials 0785ccfc>
; ModelSpace (RO) = #<VLA-OBJECT IAcadModelSpace2 0785cd4c>
; MSpace = AutoCAD: Invalid mode
; Name (RO) = "Drawing1.dwg"
; ObjectSnapMode = 0
; PaperSpace (RO) = #<VLA-OBJECT IAcadPaperSpace2 0785cd9c>
; Path (RO) = "C:\\Documents and Settings\\Alexander\\My Documents"
; PickfirstSelectionSet (RO) = #<VLA-OBJECT IAcadSelectionSet 0784fe1c>
; Plot (RO) = #<VLA-OBJECT IAcadPlot 02104ec4>
; PlotConfigurations (RO) = #<VLA-OBJECT IAcadPlotConfigurations 0785cdec>
; Preferences (RO) = #<VLA-OBJECT IAcadDatabasePreferences 02105204>
; ReadOnly (RO) = 0
; RegisteredApplications (RO) = #<VLA-OBJECT IAcadRegisteredApplications
0785ce3c>
; Saved (RO) = -1
; SectionManager (RO) = Exception occurred
; SelectionSets (RO) = #<VLA-OBJECT IAcadSelectionSets 0214c4e4>
; SummaryInfo (RO) = #<VLA-OBJECT IAcadSummaryInfo 02105394>
; TextStyles (RO) = #<VLA-OBJECT IAcadTextStyles 0785ce8c>
; UserCoordinateSystems (RO) = #<VLA-OBJECT IAcadUCSs 0785cedc>
; Utility (RO) = #<VLA-OBJECT IAcadUtility 0783fe6c>
; Viewports (RO) = #<VLA-OBJECT IAcadViewports 0785cf2c>
; Views (RO) = #<VLA-OBJECT IAcadViews 0785cf7c>
; Width = 1558
; WindowState = 3
; WindowTitle (RO) = "Drawing1.dwg"
; Methods supported:
; Activate ()
; AuditInfo (1)
; Close (2)
; CopyObjects (3)
; EndUndoMark ()
; Export (3)
; GetVariable (1)
; HandleToObject (1)
; Import (3)
; LoadShapeFile (1)
; New (1)
; ObjectIdToObject (1)
; Open (2)
; PurgeAll ()
; Regen (1)
; Save ()
; SaveAs (3)
; SendCommand (1)
; SetVariable (2)
; StartUndoMark ()
; Wblock (2)
T
请公布这份清单,我需要看看。 对于测试,我使用autcad2000
命令:(vl load com)
命令:(vlax dump object(vla get ActiveDocument(vlax get acad object))t)
; IAcadDocument:AutoCAD图形
; 属性值:
; 有效(RO)=-1
; ActiveDimStyle=#
; 活动层=#
; 活动布局=#
; 活动线型=#
; ActivePViewport=AutoCAD:图纸空间中没有活动视口
; ActiveSelectionSet(RO)=#
; 活动空间=1
; ActiveTextStyle=#
; 活动UCS=#
; 活动视口=#
; 应用(RO)=#
; 块(RO)=#
; 数据库(RO)=#
; 词典(RO)=#
; 尺寸样式(RO)=#
; 高程模型空间=0.0
; 标高纸张空间=0.0
; 全名(RO)=“”
; 组(RO)=#
; 高度=564
; HWND(RO)=198838
; 层(RO)=#
; 布局(RO)=#
; 极限=(0.0 0.0 12.0 9.0)
; 线型(RO)=#
; 模型空间(RO)=#
; MSpace=AutoCAD:模式无效
; 名称(RO)=“Drawing1.dwg”
; ObjectSnapMode=0
; 纸张空间(RO)=#
; 路径(RO)=“D:”
; PickfirstSelectionSet(RO)=#
; 绘图(RO)=#
; 绘图配置(RO)=#
; 首选项(RO)=#
; 只读(RO)=0
; 注册应用程序(RO)=016d2084>
; 保存(RO)=0
; 选择集(RO)=#
; 文本样式(RO)=#
; 用户协调系统(RO)=#
; 公用设施(RO)=#
; 视口(RO)=#
; 视图(RO)=#
; 宽度=978
; 窗口状态=3
; WindowTitle(RO)=“Drawing1”
; 支持的方法:
; 激活()
; 试听信息(1)
; 关闭(2)
; CopyObjects(3)
; EndUndoMark()
; 出口(3)
; GetVariable(1)
; 把手对象(1)
; 导入(3)
; LoadShapeFile(1)
; 新(1)
; 目标对象(1)
; 打开(1)
; PurgeAll()
; 再生(1)
; 保存()
; SaveAs(2)
; SendCommand(1)
; SetVariable(2)
; StartUndoMark()
; Wblock(2) 这太奇怪了。”缺少材质集合和“ActiveMaterial”属性我不知道如何帮助您可以打开“开发人员帮助”>“ActiveX和VBA引用”>“属性”,然后尝试查找“材质属性”。如果是,我想看看所有者对象。与普通Autocad一样: 请帮我把2个lisp程序合并成一个。
添加材料和添加颜色lisp程序我想结合。
请指导我
有。列表“Lst”的每个成员的最后一个成员是一种颜色(0-255)。
(defun c:pumc(/ actDoc Lst sSet mLst cMat sCnt l
Cnt mCnt eCnt cCol *error*)
(vl-load-com)
(setq Lst (list
'("0" "Global" 4)
'("Layer1" "Material 1" 1)
'("Layer2" "Material 2" 6)
); end list
); end setq
(defun *error*(msg)
(if actDoc(vla-EndUndoMark actDoc))
(princ)
); end of error*
(vl-load-com)
(if(setq sSet(ssget "_X" '((0 . "*SOLID"))))
(progn
(setq sCnt 0 lCnt 0)
(vlax-for mat (vla-get-Materials
(setq actDoc
(vla-get-ActiveDocument
(vlax-get-acad-object))))
(setq mLst(cons(vla-get-Name mat)mLst))
); end vlax-for
(vla-StartUndoMark actDoc)
(foreach itm
(mapcar 'vlax-ename->vla-object
(vl-remove-if 'listp
(mapcar 'cadr(ssnamex sSet))))
(if(setq cMat
(cadr
(assoc
(setq cLay(vla-get-Layer itm))Lst)))
(if(member cMat mLst)
(if(vl-catch-all-error-p
(vl-catch-all-apply 'vla-put-Material
(list itm cMat)))
(setq lCnt(1+ lCnt))
(setq sCnt(1+ sCnt))
); end if
(if(not(member cMat mCnt))
(setq mCnt(cons cMat mCnt))
); end if
); end if
(if(not(member cLay eCnt))
(setq eCnt(cons cLay eCnt))
); end if
);end if
(if(setq cCol
(last
(assoc
(setq cLay(vla-get-Layer itm))Lst)))
(if(vl-catch-all-error-p
(vl-catch-all-apply 'vla-put-Color
(list itm cCol))) nil
); end if
); end if
); end foreach
(vla-EndUndoMark actDoc)
(if(or(/= 0 lCnt)(/= 0(length mCnt))(/= 0(length eCnt)))
(progn
(princ "\n========================= ERROR LIST =========================\n")
(if(/= 0(length mCnt))
(progn
(princ "\nFollowing materials missed in drawing: \n")
(foreach mat mCnt
(princ(strcat "\n " mat))
); end foreach
(princ "\n")
); end progn
); end if
(if(/= 0(length eCnt))
(progn
(princ "\nSome solid layers missed in list: \n")
(foreach lay eCnt
(princ(strcat "\n " lay))
); end foreach
(princ "\n")
); end progn
); end if
(if(/= 0 lCnt)
(princ(strcat "\n" (itoa lCnt) " were on locked layer!\n"))
); end if
(princ "\n========================== END LIST ==========================\n")
(textscr)
); end progn
); end if
(princ(strcat "\n<<< Materials and colors are attached for "
(itoa sCnt) " of "
(itoa(sslength sSet)) " solids >>>"))
); end progn
(princ "\n<!> No Solids Found <!> ")
); end if
(princ)
); end of c:pumc
它在2005年不起作用。我不知道Visual LISP是如何访问版本材料集合的。可能在2007年(R 17.0)? 谢谢阿斯米。。。。
页:
1
[2]