找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 940|回复: 8

[求助] [求助]:为什么我试了不能调用?(OK)

[复制链接]
发表于 2003-8-4 17:00:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
这是我在晓东网站上找到的一些小lsp程序,我今天试着将它加载到我的cad2004里面去!我按照晓东网站上说的方法去加载了!可是加载不上!为什么?请帮帮我!谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-8-5 08:07:15 | 显示全部楼层

Re: [求助]:为什么我试了不能调用?

最初由 hpisme 发布
[B]这是我在晓东网站上找到的一些小lsp程序,我今天试着将它加载到我的cad2004里面去!我按照晓东网站上说的方法去加载了!可是加载不上!为什么?请帮帮我!谢谢 [/B]

最好直接贴出代码

  1.   [FONT=courier new]
  2. ; 绘制电话线路
  3. defun c:FF ( / )
  4. (setvar "CELTYPE" "DHXL")
  5. (setvar "CElayer" "WIRE")
  6. (command ".LINE")
  7. (princ)
  8. )
  9. ; 绘制电视线路
  10. defun c:TT ( / )
  11. (setvar "CELTYPE" "DSXL")
  12. (setvar "CElayer" "WIRE")
  13. (command ".LINE")
  14. (princ)
  15. )
  16. ; 绘制网络线路
  17. defun c:WW ( / )
  18. (setvar "CELTYPE" "WLXL")
  19. (setvar "CElayer" "WIRE")
  20. (command ".LINE")
  21. (princ)
  22. )
  23. ; 绘制接地线路
  24. defun c:DX ( / )
  25. (setvar "CELTYPE" "JDX")
  26. (setvar "CElayer" "TH_WIRE2")
  27. (command ".LINE")
  28. (princ)
  29. )
  30. ; 绘制应急照明线路
  31. defun c:XX ( / )
  32. (setvar "CELTYPE" "DASH")
  33. (setvar "CElayer" "WIRE")
  34. (command ".LINE")
  35. (princ)
  36. )
  37. ; 绘制控制线路
  38. defun c:GG ( / )
  39. (setvar "CELTYPE" "CENTER2")
  40. (setvar "CElayer" "WIRE")
  41. (command ".LINE")
  42. (princ)
  43. )
  44. ; 多重拷贝增加undo功能
  45. (defun c:CC( / n p1 p2 ss )
  46. (if(and(setq n 0 p2 t )
  47.         (setq ss(ssget))
  48.         (setq p1(getpoint "\nBASE"))
  49.     )
  50. (progn(command"undo""group")
  51.   (while p2
  52.    (initget "Undo")
  53.    (setq p2
  54.      (ACET-SS-DRAG-MOVE ss p1"\n第二点(U-undo)" nil))
  55.    (cond((= p2 "Undo")
  56.          (if(> n 0)(progn(command"undo""1")(setq n(1- n)))
  57.                    (princ"\n主人提醒你不能再Undo")
  58.          )
  59.        )
  60.        (p2
  61.          (setq os(getvar"osmode"))
  62.          (setvar"osmode"0)
  63.          (command"copy" ss "" p1 p2)
  64.          (setvar"osmode"0)
  65.          (setq n(1+ n) os nil)
  66.        )
  67.       (t)
  68.     )
  69.    )
  70.   (command"undo""end")
  71. )
  72. )(princ))
  73. ;旋转拷贝命令
  74. (defun c:rc (/ ent)
  75. (princ "主人提醒你:请选择旋转复制物体.")
  76. (setq ent (ssget))
  77. (command "copy" ent "" "@""@")
  78. (command "rotate" ent "")
  79. )
  80. ;平移复制命令
  81. (defun C:PC(/ s pt1 pt2 pt3 ang dis)
  82. (setq s(ssget))
  83. (setq pt1 (getpoint "请给出平移复制的基准点:"))
  84. (setvar "ORTHOMODE" 1)
  85. (setq pt2 (getpoint pt1 "请给出复制的方向:"))
  86. (setq ang (angle pt1 pt2))
  87. (setq dis (getdist "请给出复制的距离:"))
  88. (setq pt3 (polar pt1 ang dis))
  89. (command "COPY" s "" pt1 pt3)
  90. (setvar "ORTHOMODE" 0)
  91. )
  92. ;文字替换程序
  93. (defun c:th(/ a b ent ent2 elist etype oldval bltxt entdata btxt ostr pt oltxt )
  94. ??(princ "\n       *******  文字替换程序   *******       Writen by 王海平")
  95. ?? (princ "\n 请选择复制源文字目标:")
  96. ?? (setq ent (nentsel))
  97. ?? (if (= ent nil)(setq oldval (getstring "\n  请输入文字:"))
  98. ??  (progn
  99. ??          (setq
  100. ??                   ent2 ent
  101. ??                   elist (entget (car ent))
  102. ??                   etype (cdr (assoc 0 elist))
  103. ??          )
  104. ??        (setq  oldval (cdr (assoc 1 elist)))
  105. ??        (princ "\n ")
  106. ??        (princ "\n复制文字内容为:  ") (princ oldval)
  107. ??    )
  108. ??)
  109. ??(setq q 9)
  110. ??(while q
  111. ??  (princ "\n ")
  112. ??  (setq bltxt (nentsel "\n请选择需要替换的文字目标:"))
  113. ??  (if (= bltxt nil)(setq q nil)
  114. ??  (progn
  115. ??     (setq entdata (entget (car bltxt)) btxt (cdr (assoc 1 entdata)) ostr btxt)
  116. ??     (setq  elist (entget (car bltxt)))
  117. ??     (setq  etype (cdr (assoc 0 elist)))
  118. ?? ;;    (setq oltxt (car (assoc 1 elist)))
  119. ??     (setq  oltxt (cdr (assoc 1 elist)))
  120. ??     (if (= etype "ATTRIB")
  121. ??        (progn
  122. ??        (setq pt (cadr bltxt))
  123. ??        (command ".attedit" "" "" "" "" pt "" "V" "R" oldval "n")
  124. ??        )
  125. ??     (progn     
  126. ??     (setq btxt oldval)
  127. ??     (entmod (subst (cons 1 btxt)(assoc 1 entdata) entdata))
  128. ??     (if (setq bltxt (car (reverse (cadddr bltxt)))) (entupd bltxt))
  129. ??  ))))  
  130. ??     (princ "\n原文字为:")(princ oltxt)(princ ".  已被替换为: ")(princ oldval)(princ " .")
  131. ??)
  132. ??(princ)
  133.   [/FONT]

....................................................................................................................
问题:
1、在DEFUN前没有(。
2、文字替换部分应该是正航的程序,其中加入了一些ASCII码为163的字符(在论坛中我已经修改过),程序不能运行。
3、还有一处缺少空格
4、有一处括号不配对
修改后为(检查通过,但没有运行):

  1.   [FONT=courier new]
  2.                                         ; 绘制电话线路
  3. (defun c:FF (/)
  4.   (setvar "CELTYPE" "DHXL")
  5.   (setvar "CElayer" "WIRE")
  6.   (command ".LINE")
  7.   (princ)
  8. )
  9.                                         ; 绘制电视线路
  10. (defun c:TT (/)
  11.   (setvar "CELTYPE" "DSXL")
  12.   (setvar "CElayer" "WIRE")
  13.   (command ".LINE")
  14.   (princ)
  15. )
  16.                                         ; 绘制网络线路
  17. (defun c:WW (/)
  18.   (setvar "CELTYPE" "WLXL")
  19.   (setvar "CElayer" "WIRE")
  20.   (command ".LINE")
  21.   (princ)
  22. )
  23.                                         ; 绘制接地线路
  24. (defun c:DX (/)
  25.   (setvar "CELTYPE" "JDX")
  26.   (setvar "CElayer" "TH_WIRE2")
  27.   (command ".LINE")
  28.   (princ)
  29. )
  30.                                         ; 绘制应急照明线路
  31. (defun c:XX (/)
  32.   (setvar "CELTYPE" "DASH")
  33.   (setvar "CElayer" "WIRE")
  34.   (command ".LINE")
  35.   (princ)
  36. )
  37.                                         ; 绘制控制线路
  38. (defun c:GG (/)
  39.   (setvar "CELTYPE" "CENTER2")
  40.   (setvar "CElayer" "WIRE")
  41.   (command ".LINE")
  42.   (princ)
  43. )
  44.                                         ; 多重拷贝增加undo功能
  45. (defun c:CC (/ n p1 p2 ss)
  46.   (if (and (setq n  0
  47.                  p2 t
  48.            )
  49.            (setq ss (ssget))
  50.            (setq p1 (getpoint "\nBASE"))
  51.       )
  52.     (progn (command "undo" "group")
  53.            (while p2
  54.              (initget "Undo")
  55.              (setq p2
  56.                     (ACET-SS-DRAG-MOVE ss p1 "\n第二点(U-undo)" nil)
  57.              )
  58.              (cond ((= p2 "Undo")
  59.                     (if        (> n 0)
  60.                       (progn (command "undo" "1") (setq n (1- n)))
  61.                       (princ "\n主人提醒你不能再Undo")
  62.                     )
  63.                    )
  64.                    (p2
  65.                     (setq os (getvar "osmode"))
  66.                     (setvar "osmode" 0)
  67.                     (command "copy" ss "" p1 p2)
  68.                     (setvar "osmode" 0)
  69.                     (setq n  (1+ n)
  70.                           os nil
  71.                     )
  72.                    )
  73.                    (t)
  74.              )
  75.            )
  76.            (command "undo" "end")
  77.     )
  78.   )
  79.   (princ)
  80. )
  81.                                         ;旋转拷贝命令
  82. (defun c:rc (/ ent)
  83.   (princ "主人提醒你:请选择旋转复制物体.")
  84.   (setq ent (ssget))
  85.   (command "copy" ent "" "@" "@")
  86.   (command "rotate" ent "")
  87. )
  88.                                         ;平移复制命令
  89. (defun C:PC (/ s pt1 pt2 pt3 ang dis)
  90.   (setq s (ssget))
  91.   (setq pt1 (getpoint "请给出平移复制的基准点:"))
  92.   (setvar "ORTHOMODE" 1)
  93.   (setq pt2 (getpoint pt1 "请给出复制的方向:"))
  94.   (setq ang (angle pt1 pt2))
  95.   (setq dis (getdist "请给出复制的距离:"))
  96.   (setq pt3 (polar pt1 ang dis))
  97.   (command "COPY" s "" pt1 pt3)
  98.   (setvar "ORTHOMODE" 0)
  99. )
  100.                                         ;文字替换程序
  101. (defun c:th (/ a b ent ent2 elist etype        oldval bltxt entdata btxt ostr
  102.              pt        oltxt)
  103.   (princ
  104.     "\n       *******  文字替换程序   *******       Writen by 王海平"
  105.   )
  106.   (princ "\n 请选择复制源文字目标:")
  107.   (setq ent (nentsel))
  108.   (if (= ent nil)
  109.     (setq oldval (getstring "\n请输入文字:"))
  110.     (progn
  111.       (setq ent2  ent
  112.             elist (entget (car ent))
  113.             etype (cdr (assoc 0 elist))
  114.       )
  115.       (setq oldval (cdr (assoc 1 elist)))
  116.       (princ "\n ")
  117.       (princ "\n复制文字内容为:  ")
  118.       (princ oldval)
  119.     )
  120.   )
  121.   (setq q 9)
  122.   (while q
  123.     (princ "\n ")
  124.     (setq bltxt (nentsel "\n请选择需要替换的文字目标:"))
  125.     (if        (= bltxt nil)
  126.       (setq q nil)
  127.       (progn
  128.         (setq entdata (entget (car bltxt))
  129.               btxt    (cdr (assoc 1 entdata))
  130.               ostr    btxt
  131.         )
  132.         (setq elist (entget (car bltxt)))
  133.         (setq etype (cdr (assoc 0 elist)))
  134.         (setq oltxt (car (assoc 1 elist)))
  135.         (setq oltxt (cdr (assoc 1 elist)))
  136.         (if (= etype "ATTRIB")
  137.           (progn
  138.             (setq pt (cadr bltxt))
  139.             (command ".attedit" "" "" "" "" pt "" "V" "R" oldval "n")
  140.           )
  141.           (progn
  142.             (setq btxt oldval)
  143.             (entmod (subst (cons 1 btxt) (assoc 1 entdata) entdata))
  144.             (if        (setq bltxt (car (reverse (cadddr bltxt))))
  145.               (entupd bltxt)
  146.             )
  147.           )
  148.         )
  149.       )
  150.     )
  151.     (princ "\n原文字为:")
  152.     (princ oltxt)
  153.     (princ ".  已被替换为: ")
  154.     (princ oldval)
  155.     (princ " .")
  156.   )
  157.   (princ)
  158. )
  159.   [/FONT]

建议:
希望今后使用VL编辑,可以检查错误、调试、格式化等。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-5 09:22:07 | 显示全部楼层
十分感谢lijiao朋友的指教,我今天用你的lsp程序重新调用了,除了前面那几个画线的命令不好用以外,其他的命令都好用!在r14里我也试了,14里出现如图提示,而2004里则什么提示也没有出现!
另:为表谢意,已汇爱心币10个于你帐下!请笑纳!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-5 10:10:30 | 显示全部楼层
最初由 hpisme 发布
[B]十分感谢lijiao朋友的指教,我今天用你的lsp程序重新调用了,除了前面那几个画线的命令不好用以外,其他的命令都好用!在r14里我也试了,14里出现如图提示,而2004里则什么提示也没有出现!
另:为表谢意,已汇爱心币10个于?.. [/B]

R14下好像不能用SETVAR函数,可以改用(COMMAND “SETVAR” 变量名  变量值)
...........................................................................................................
我不缺钱,谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-5 10:50:21 | 显示全部楼层
那为什么我在2004里也不能用呢?还请指教!真不好意思!lisp方面我好菜!现在发现它好有用!我想要开始学它了!能否帮助推荐一本书?
刚才我又试了一下:在2004里出现如下提示:
命令: ww ; 错误: AutoCAD 变量设置被拒绝: "CElayer" "WIRE"

命令:
命令: gg ; 错误: AutoCAD 变量设置被拒绝: "CELTYPE" "CENTER2"

命令:
命令: c*取消*

命令: xx ; 错误: AutoCAD 变量设置被拒绝: "CELTYPE" "DASH"

命令:
命令: '_linetype
命令: xx ; 错误: AutoCAD 变量设置被拒绝: "CELTYPE" "DASH"

命令:
命令: gg ; 错误: AutoCAD 变量设置被拒绝: "CElayer" "WIRE"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-5 12:47:01 | 显示全部楼层
1、当前层变量是CLAYER,而不是CELAYER。
2、你的文件里是否定义了你所需要的图层?
3、你是否加载了有关的线形?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-5 13:52:40 | 显示全部楼层
把当前层变量是CLAYER改成CELAYER后 可以用了,再问一下:我想要这些线在不同层,但并不要求它所在层变成当前层,既我想让当前层保持不变!这个可以实现吗?
十分感谢!帮了我大忙了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-8-5 14:49:21 | 显示全部楼层
最初由 hpisme 发布
[B]把当前层变量是CLAYER改成CELAYER后 可以用了,再问一下:我想要这些线在不同层,但并不要求它所在层变成当前层,既我想让当前层保持不变!这个可以实现吗?
十分感谢!帮了我大忙了! [/B]

打个比方
(defun c:FF (/)
  (setvar "CELTYPE" "DHXL")
  (setvar "CElayer" "WIRE")
  (command ".LINE")
  (princ)
)

解决:

  1. (defun c:ff( / a  b)
  2. [color=red]
  3. (setq a(getvar"CELTYPE")  b(getvar "clayer")) [/color]
  4. (setvar "CELTYPE" "DHXL")
  5. (setvar "Clayer" "WIRE")
  6. (command "LINE" )
  7. [color=red]
  8. (while(/= 0(getvar "CMDACTIVE"))(command pause))
  9.   (setvar "CELTYPE" a)
  10.   (setvar "Clayer" b)  [/color]
  11. (princ)
  12. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-5 15:43:54 | 显示全部楼层
十分感谢aeo班主!我成功了!^_^!晓东真的不错!什么问题都可以解决!
再次感谢!
我得好好学学lisp了!真的很有用!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 17:43 , Processed in 0.372116 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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