明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3421|回复: 2

[提问] 制作的lisp文件加载在CAD2014上的问题!

[复制链接]
发表于 2013-9-4 21:19:13 | 显示全部楼层 |阅读模式
自己制作的lisp文件加载在CAD2014上 出现 “参数类型错误: VLA 对象集合: #<VLA-OBJECT 1479625c>”


加载到CAD08,CAD12都没有出现这样的问题!

求解答!?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-9-4 23:35:30 | 显示全部楼层
啥程序?贴代码上来
 楼主| 发表于 2013-9-5 10:29:10 | 显示全部楼层
本帖最后由 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有问题!!不麻烦大家了




您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-26 10:09 , Processed in 0.187978 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表