1. 在学习这一块的时候,得到的结果都是指针,只能机械的应用,却不能理解,如vlax-Get-Acad-Object、vla-Get-ActiveDocument、vla-Get-Layers,看多了也大体上知道是用来做什么的,如何能更好的理解这样做的目的?想在程序里去感受,但得到的结果却自己看起来也不是那么明白。比如- (setq a (vlax-Get-Acad-Object))
- (setq b (vla-Get-ActiveDocument a))
- (setq c (vla-Get-Layers b))
- (setq d (vla-GetExtensionDictionary c))
- (setq e (vla-Remove d "ACAD_LAYERFILTERS"))
得到的各种指针结果看起来似乎也看得不是很明白,这块应该如何理解?
2. 同时,有一些Vla-系列的命令在《AutoLisp函数(葵花宝典).chm》里找不到,这个时候应该去哪里找寻相关信息?比如vla-GetExtensionDictionary、vla-Remove。
3. 在以下代码中:- (defun C:pu ()
- (vl-Load-Com)
- (vl-Catch-All-Apply
- '(lambda ()
- (vla-Remove
- (vla-GetExtensionDictionary
- (vla-Get-Layers
- (vla-Get-ActiveDocument
- (vlax-Get-Acad-Object)
- )
- )
- )
- "ACAD_LAYERFILTERS"
- )
- )
- )
- (command "_.PURGE" "a" "*" "N")
- (princ "\n所有图层过滤器已经被删除。")(princ)
- )
vla-GetExtensionDictionary这一步开始就不太明白了,vla-GetExtensionDictionary这个得到的是图层的扩展词典吗?
vla-Remove这个命令是是排除扩展词典里的图层类信息吗?
vl-Catch-All-Apply中执行了无参数的函数lambda ()...,如果成功了反回vla-Remove后得到的结果,如果出现错误,返回一个错误对象,这里我不太明白为什么还要特别采用vl-Catch-All-Apply,函数lambda ()...有错误的可能吗?不是肯定能成功吗?
最后,对于(command "_.PURGE" "a" "*" "N")命令之前的内容,我没有看明白编程人员的目的是什么,直接这条命令不也可以运行吗?
|