找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 567|回复: 0

[求助] [求助]:哪位有空进来帮我看看问题出在哪??

[复制链接]
发表于 2006-11-16 17:47:24 | 显示全部楼层 |阅读模式

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

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

×
首先先感谢Dallas_whu 在http://p4.xdcad.net/forum/showthread.php?s=&threadid=604592  帮我回答了一直以来的遇到的问题。
这个是修改过后的。但是当我输入"O"的时候指针总是不能指到  (if (= dis "O") (setq k 2))[/COLOR],而直接选择对象。

  1.   [FONT=courier new]
  2. ;**********************************************双向偏移oo
  3.   (defun c:oo()
  4.      (setq orig_cmd (getvar "cmdecho"))
  5.      (setvar "cmdecho" 0)                ; cmdecho = 0

  6.   (if (= nil dis_orig) (setq dis_orig 100)) ;如果dis为空(回车)则设dis=100。
  7.   (initget 6 "O")
  8.   (setq dis (getdist (strcat "\n>>指定偏移距离或[设置(O)] <" (rtos dis_orig) ">:")))
  9.   (if (= nil dis) (setq dis dis_orig) (setq k 1))  ;如果dis为回车,则为100,并指针转到k=1.
  10.   ;如果dis不为回车,并且不是输入"O";则预设<>里的值为dis(即另输入距离),并指针转到k=1.
  11.   (if (and (/= nil dis) (/= "O" dis)) (setq dis_orig dis) (setq k 1))

  12. ;************************************输入是数值时。
  13.   (while (= k 1)
  14.       (setq ss (ssadd))  ;建立一个名为ss的选择集。
  15.       (setq en (entsel "\n>>选择要偏移的线:")) ;选择单个图元(提示选择line)
  16. ;以下表示,如果选择为空集则退出lisp返回AutoCAD系统。
  17.   (if (= nil en)
  18.     (progn
  19.       (princ "\n>>error!")
  20.       (exit)
  21.   ));  end of if
  22.       (setq na (car en)) ;取得选到的图元的图元名。
  23.       (ssadd na ss)  ;将所选到的图元名加入到ss选择集里。
  24.       (setq data (entget na))  ;取得图元资料串列。
  25.       (setq pt_1st (cdr (assoc '10 data)))  ;取得图元(线)的第一点。
  26.       (setq pt_2nd (cdr (assoc '11 data)))  ;取得图元(线)的第二点。
  27.       (setq ml_ss (ssadd))  ;建立一个名为ml_ss的选择集。
  28.       (command "mline" "j" "z" "s" (* 2 dis) pt_1st pt_2nd "")  ;画出两条多线。
  29.       (setq enla (entlast)) ;设定enla为最后的选择图元名
  30.       (ssadd enla ml_ss)  ;将enla加入到ml_ss选择集当中。
  31.       (command "EXPLODE" ml_ss)  ;将ml_ss选择集当中的多线炸开,得到双向偏移的效果。
  32.       (ssdel enla ml_ss)  ;从ml_ss选择集中删除掉enla。此时ml_ss应为空集。
  33.       (ssdel na ss)  ;从ss选择集中删除掉na。此时ss应为空集。

  34.   ) ;end of while

  35. ;************************************输入"o"
  36. [COLOR=red]  (if (= dis "O") (setq k 2))[/COLOR]  ;如果dis输入为"O",则转到设置sett
  37.   (if (= k 2)
  38.     (progn
  39.       (initget 1 "S E N")
  40.       (setq sett (getkword "\n[选择偏移距离(S)/删除原来的线(E)/偏移后的图层(N)]: "))
  41.   )) ;end of if(= dis "O")
  42.    
  43. ;************************************输入"s"
  44.    (if (= sett "S") (setq k 3))
  45.    (while (= k 3)
  46.       (setq dis (getdist "\n选择偏移距离: "))
  47.       (setq ss (ssadd))  ;建立一个名为ss的选择集。
  48.       (setq en (entsel "\n>>选择要偏移的线:")) ;选择单个图元(提示选择line)
  49. ;以下表示,如果选择为空集则退出lisp返回AutoCAD系统。
  50.   (if (= nil en)
  51.     (progn
  52.       (princ "\n>>error!")
  53.       (exit)
  54.   ));  end of if
  55.       (setq na (car en)) ;取得选到的图元的图元名。
  56.       (ssadd na ss)  ;将所选到的图元名加入到ss选择集里。
  57.       (setq data (entget na))  ;取得图元资料串列。
  58.       (setq pt_1st (cdr (assoc '10 data)))  ;取得图元(线)的第一点。
  59.       (setq pt_2nd (cdr (assoc '11 data)))  ;取得图元(线)的第二点。
  60.       (setq ml_ss (ssadd))  ;建立一个名为ml_ss的选择集。
  61.       (command "mline" "j" "z" "s" (* 2 dis) pt_1st pt_2nd "")  ;画出两条多线。
  62.       (setq enla (entlast)) ;设定enla为最后的选择图元名
  63.       (ssadd enla ml_ss)  ;将enla加入到ml_ss选择集当中。
  64.       (command "EXPLODE" ml_ss)  ;将ml_ss选择集当中的多线炸开,得到双向偏移的效果。
  65.       (ssdel enla ml_ss)  ;从ml_ss选择集中删除掉enla。此时ml_ss应为空集。
  66.       (ssdel na ss)  ;从ss选择集中删除掉na。此时ss应为空集。

  67.   );end of while
  68.    
  69. ;************************************输入"e"
  70.    (if (= sett "E") (setq k 4))
  71.   (while (= k 4)

  72.       (setq ss (ssadd))  ;建立一个名为ss的选择集。
  73.       (setq en (entsel "\n>>选择要偏移的线:")) ;选择单个图元(提示选择line)
  74.    
  75. ;以下表示,如果选择为空集则退出lisp返回AutoCAD系统。
  76.   (if (= nil en)
  77.     (progn
  78.       (princ "\n>>error!")
  79.       (exit)
  80.   ));  end of if
  81.       (setq na (car en)) ;取得选到的图元的图元名。
  82.       (ssadd na ss)  ;将所选到的图元名加入到ss选择集里。
  83.       (setq data (entget na))  ;取得图元资料串列。
  84.       (setq pt_1st (cdr (assoc '10 data)))  ;取得图元(线)的第一点。
  85.       (setq pt_2nd (cdr (assoc '11 data)))  ;取得图元(线)的第二点。
  86.       (setq ml_ss (ssadd))  ;建立一个名为ml_ss的选择集。
  87.       (command "mline" "j" "z" "s" (* 2 dis2) pt_1st pt_2nd "")  ;画出两条多线。
  88.       (setq enla (entlast)) ;设定enla为最后的选择图元名
  89.       (ssadd enla ml_ss)  ;将enla加入到ml_ss选择集当中。
  90.       (command "EXPLODE" ml_ss)  ;将ml_ss选择集当中的多线炸开,得到双向偏移的效果。
  91.       (ssdel enla ml_ss)  ;从ml_ss选择集中删除掉enla。此时ml_ss应为空集。
  92.       (command "ERASE" ss"")
  93.       (ssdel na ss)  ;从ss选择集中删除掉na。此时ss应为空集。
  94.    
  95.    );end of while  

  96.   
  97.   ;************************************输入"n"
  98.    (if (= sett "N") (setq k 5))
  99.    (while (= k 5)
  100.       (setq TC (getstring "\n偏移后线的图层: "))
  101.       (setq ss (ssadd))  ;建立一个名为ss的选择集。
  102.       (setq en (entsel "\n>>选择要偏移的线:")) ;选择单个图元(提示选择line)
  103.      
  104. ;以下表示,如果选择为空集则退出lisp返回AutoCAD系统。
  105.   (if (= nil en)
  106.     (progn
  107.       (princ "\n>>error!")
  108.       (exit)
  109.   ));  end of if
  110.       (setq na (car en)) ;取得选到的图元的图元名。
  111.       (ssadd na ss)  ;将所选到的图元名加入到ss选择集里。
  112.       (setq data (entget na))  ;取得图元资料串列。
  113.       (setq pt_1st (cdr (assoc '10 data)))  ;取得图元(线)的第一点。
  114.       (setq pt_2nd (cdr (assoc '11 data)))  ;取得图元(线)的第二点。
  115.       (setq ml_ss (ssadd))  ;建立一个名为ml_ss的选择集。
  116.       (setq cla (getvar "clayer"))
  117.       (command "clayer" TC)
  118.       (command "mline" "j" "z" "s" (* 2 dis) pt_1st pt_2nd "")  ;画出两条多线。
  119.       (setq enla (entlast)) ;设定enla为最后的选择图元名
  120.       (ssadd enla ml_ss)  ;将enla加入到ml_ss选择集当中。
  121.       (command "EXPLODE" ml_ss)  ;将ml_ss选择集当中的多线炸开,得到双向偏移的效果。
  122.       (ssdel enla ml_ss)  ;从ml_ss选择集中删除掉enla。此时ml_ss应为空集。
  123.       (ssdel na ss)  ;从ss选择集中删除掉na。此时ss应为空集。
  124.       
  125.    ) ;end of while

  126.       (prin1)
  127.   )

  128.   [/FONT]

有时间的人可以帮我调试看看问题出在哪里,我试了一个下午了没办法。找不到出路。呜~~~~~。

怎么没有人回复啊??????
不知道哪里出错了~!~!~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-18 02:35 , Processed in 0.174743 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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