制作的lisp文件加载在CAD2014上的问题!
自己制作的lisp文件加载在CAD2014上 出现 “参数类型错误: VLA 对象集合: #<VLA-OBJECT 1479625c>”加载到CAD08,CAD12都没有出现这样的问题!
求解答!?
啥程序?贴代码上来 本帖最后由 xudi1234 于 2013-9-5 14:22 编辑
(vl-load-com)
(setq dqpzm (getvar "CPROFILE"));当前配置名字
;锁定“电气”图层,只锁当前配置的图层,比如当前配置为天正电气,就只锁天正电气的图层
(defun c:3()(tcqbjs)(tz-sd)) ;锁定电气图层的同时解锁非电气图层
(defun c:1()(tcqbjs)(tz-sf)) ;锁定非电气图层的同时解锁电气图层
(defun c:w()(tcqbxs)(tz-gc)) ;关闭电气图层的同时打开非电气图层
(defun c:q()(tcqbxs)(tz-gf)) ;关闭非电气图层的同时打开电气图层
;解锁“电气”图层
(defun C:js()
(cond
((wcmatch dqpzm "TElec*")(jstc Tel-lst "电气"))
)
)
;打开“电气”图层
(defun C:kc()
(cond
((wcmatch dqpzm "TElec*")(dktc Tel-lst "电气"))
)
)
;锁定“电气”图层
(defun tz-sd()
(cond
((wcmatch dqpzm "TElec*")(sdtc Tel-lst "电气"))
)
)
;锁定非“电气”图层
(defun tz-sf()
(cond
((wcmatch dqpzm "TElec*")(sftc Tel-lst "电气"))
)
)
;关闭“电气”图层
(defun tz-gc()
(cond
((wcmatch dqpzm "TElec*")(gbtc Tel-lst "电气"))
)
)
;关闭非“电气”图层
(defun tz-gf()
(cond
((wcmatch dqpzm "TElec*")(gftc Tel-lst "电气"))
)
)
;电气图层控制
(defun C:sdd()(sdtc Tel-lst "电气"))
(defun C:jsd()(jstc Tel-lst "电气"))
(defun C:sfd()(sftc Tel-lst "电气"))
(defun C:gcd()(gbtc Tel-lst "电气"))
(defun C:kcd()(dktc Tel-lst "电气"))
(defun C:gfd()(gftc Tel-lst "电气"))
;遍历图层子程序
(defun bianlituceng ()
(defun func (/ Var)
(if (setq Var (tblnext "Layer"))
(cons (cdr (assoc 2 Var)) (func))
)
)
(cons (cdr (assoc 2 (tblnext "Layer" T))) (func))
)
;锁定“电气”图层子程序
(defun sdtc (Lay-lst pztcmz / acaddocument acadobject i j lay layersobj laylst lay-tangent m n vlay)
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument AcadObject)
LayersObj (vla-get-layers AcadDocument)
)
(setq laylst (bianlituceng))
(setq m (length laylst))
(setq j (- m 1))
(setq n (length Lay-lst))
(setq i (- n 1))
(repeat m
(setq lay (nth j laylst))
(while (>= i 0)
(setq lay-tangent (nth i Lay-lst))
(if (wcmatch lay lay-tangent)
(progn
(setq vlay (vla-item LayersObj lay))
(vla-put-lock vlay :vlax-true)
(setq i 0)
)
)
(setq i (1- i))
)
(setq i (- n 1))
(setq j (1- j))
)
(princ (strcat "\n" pztcmz "图层已锁定"))
(princ)
)
;解锁“电气”图层子程序
(defun jstc (Lay-lst pztcmz / acaddocument acadobject i j lay layersobj laylst lay-tangent m n vlay)
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument AcadObject)
LayersObj (vla-get-layers AcadDocument)
)
(setq laylst (bianlituceng))
(setq m (length laylst))
(setq j (- m 1))
(setq n (length Lay-lst))
(setq i (- n 1))
(repeat m
(setq lay (nth j laylst))
(while (>= i 0)
(setq lay-tangent (nth i Lay-lst))
(if (wcmatch lay lay-tangent)
(progn
(setq vlay (vla-item LayersObj lay))
(vla-put-lock vlay :vlax-false)
(setq i 0)
)
)
(setq i (1- i))
)
(setq i (- n 1))
(setq j (1- j))
)
(princ (strcat "\n" pztcmz "图层已解锁"))
(princ)
)
;锁定非“电气”图层子程序
(defun sftc (Lay-lst pztcmz / acaddocument acadobject i j lay layersobj laylst lay-tangent m n k vlay)
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument AcadObject)
LayersObj (vla-get-layers AcadDocument)
)
(setq laylst (bianlituceng))
(setq m (length laylst))
(setq j (- m 1))
(setq n (length Lay-lst))
(setq i (- n 1))
(setq k 0)
(repeat m
(setq lay (nth j laylst))
(while (>= i 0)
(setq lay-tangent (nth i Lay-lst))
(if (wcmatch lay lay-tangent)
(progn
(setq i 0
k 0
)
)
(setq k (1+ k))
)
(setq i (1- i))
)
(if (= k n)
(progn
(setq vlay (vla-item LayersObj lay))
(vla-put-lock vlay :vlax-true)
(setq k 0)
)
)
(setq i (- n 1))
(setq j (1- j))
(setq k 0)
)
(princ (strcat "\n非" pztcmz "图层已锁定"))
(princ)
)
;关闭“电气”图层子程序
(defun gbtc (Lay-lst pztcmz / acaddocument acadobject i j lay layersobj laylst lay-tangent m n vlay)
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument AcadObject)
LayersObj (vla-get-layers AcadDocument)
)
(setq laylst (bianlituceng))
(setq m (length laylst))
(setq j (- m 1))
(setq n (length Lay-lst))
(setq i (- n 1))
(repeat m
(setq lay (nth j laylst))
(while (>= i 0)
(setq lay-tangent (nth i Lay-lst))
(if (wcmatch lay lay-tangent)
(progn
(setq vlay (vla-item LayersObj lay))
(vla-put-layeron vlay :vlax-false)
(setq i 0)
)
)
(setq i (1- i))
)
(setq i (- n 1))
(setq j (1- j))
)
(princ (strcat "\n" pztcmz "图层已关闭"))
(princ)
)
;打开“电气”图层子程序
(defun dktc (Lay-lst pztcmz / acaddocument acadobject i j lay layersobj laylst lay-tangent m n vlay)
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument AcadObject)
LayersObj (vla-get-layers AcadDocument)
)
(setq laylst (bianlituceng))
(setq m (length laylst))
(setq j (- m 1))
(setq n (length Lay-lst))
(setq i (- n 1))
(repeat m
(setq lay (nth j laylst))
(while (>= i 0)
(setq lay-tangent (nth i Lay-lst))
(if (wcmatch lay lay-tangent)
(progn
(setq vlay (vla-item LayersObj lay))
(vla-put-layeron vlay :vlax-true)
(setq i 0)
)
)
(setq i (1- i))
)
(setq i (- n 1))
(setq j (1- j))
)
(princ (strcat "\n" pztcmz "图层已打开"))
(princ)
)
;关闭非“电气”图层子程序
(defun gftc (Lay-lst pztcmz / acaddocument acadobject i j lay layersobj laylst lay-tangent m n k vlay)
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument AcadObject)
LayersObj (vla-get-layers AcadDocument)
)
(setq laylst (bianlituceng))
(setq m (length laylst))
(setq j (- m 1))
(setq n (length Lay-lst))
(setq i (- n 1))
(setq k 0)
(repeat m
(setq lay (nth j laylst))
(while (>= i 0)
(setq lay-tangent (nth i Lay-lst))
(if (wcmatch lay lay-tangent)
(progn
(setq i 0
k 0
)
)
(setq k (1+ k))
)
(setq i (1- i))
)
(if (= k n)
(progn
(setq vlay (vla-item LayersObj lay))
(vla-put-layeron vlay :vlax-false)
(setq k 0)
)
)
(setq i (- n 1))
(setq j (1- j))
(setq k 0)
)
(princ (strcat "\n非" pztcmz "图层已关闭"))
(princ)
)
(defun c:2 () (tcqbjs)(princ "\n已解锁全部图层")(princ));全部解锁
(defun c:qw () (tcqbxs)(princ "\n已打开全部图层")(princ));全部打开
;[图层全部解锁]
(defun tcqbjs ( / acaddocument acadobject layersobj vlay)
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument AcadObject)
LayersObj (vla-get-layers AcadDocument)
);end setq
(vlax-for vlay LayersObj (vla-put-lock vlay :vlax-false));end vlax-for
)
;[图层全部显示]
(defun tcqbxs ( / acaddocument acadobject layersobj vlay)
(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument AcadObject)
LayersObj (vla-get-layers AcadDocument)
);end setq
(vlax-for vlay LayersObj (vla-put-layeron vlay :vlax-true));end vlax-for
;(vla-regen AcadDocument AcAllViewPorts) 图形较大有时需要重生成才显示 可把这句加上
(princ "\n已打开全部图层")
(princ)
)
CAD有问题!!不麻烦大家了
页:
[1]