明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1288|回复: 4

line命令时每次只画一条线

[复制链接]
发表于 2013-8-4 20:44:04 | 显示全部楼层 |阅读模式
请问如何在用line命令时每次只画一条线,而不是连续画多条线!
发表于 2013-8-4 21:06:13 | 显示全部楼层
  1. (defun c:linex (/ p1 p2 dist ang ents pts linefuzz angfuzz)
  2.   (setq linefuzz 4.0)
  3.   (setq angfuzz 0.001)
  4.   (defun makepline (spc pts / norm elv pline)
  5.     (setq norm (trans '(0 0 1) 1 0 t)
  6.           elv  (caddr (trans (car pts) 1 norm))
  7.     )
  8.     (setq pline
  9.            (vlax-invoke
  10.              spc
  11.              'addlightweightpolyline
  12.              (apply 'append
  13.                     (mapcar '(lambda (pt)
  14.                                (setq pt (trans pt 1 norm))
  15.                                (list (car pt) (cadr pt))
  16.                              )
  17.                             pts
  18.                     )
  19.              )
  20.            )
  21.     )
  22.     (vla-put-elevation pline elv)
  23.     (vla-put-normal pline (vlax-3d-point norm))
  24.     pline
  25.   )
  26.   (setq 45deg (/ pi 4))
  27.   (setq p1 (getpoint "\n指定第一点: "))
  28.   (while (and p1
  29.               (setq p2 (getpoint p1 "\n下一点:"))
  30.          )
  31.     (setq dist (distance p1 p2)
  32.           ang  (angle p1 p2)
  33.     )
  34.     (setq dist (* (fix (+ (/ dist linefuzz) 0.99)) linefuzz))
  35.     (if        (< (rem ang 45deg) 0.0523599)
  36.       (setq ang (* 45deg (fix (/ ang 45deg))))
  37.       (princ (strcat "\nWarning: Segment "
  38.                      (itoa (max (length pts) 1))
  39.                      " is a non standard angle."
  40.              )
  41.       )
  42.     )
  43.     (setq p2 (polar p1 ang dist))
  44.     (setq ents (cons
  45.                  (entmakex
  46.                    (list (cons 0 "LINE")
  47.                          (cons 6 "BYLAYER")
  48.                          (cons 10 p1)
  49.                          (cons 11 p2)
  50.                          (cons 39 0.0)
  51.                          (cons 62 256)
  52.                    )
  53.                  )
  54.                  ents
  55.                )
  56.           pts  (if pts
  57.                  (cons p2 pts)
  58.                  (list p2 p1)
  59.                )
  60.     )
  61.     (setq p1 p2)
  62.   )
  63.   (and pts
  64.        (null (initget "Yes No"))
  65.        (/= (getkword "\n转换为多段线[(Y)es/(N)o] <Yes>: ")
  66.            "No"
  67.        )
  68.        (makepline
  69.          (if (= 1 (getvar "CVPORT"))
  70.            (vla-get-paperspace
  71.              (vla-get-activedocument (vlax-get-acad-object))
  72.            )
  73.            (vla-get-modelspace
  74.              (vla-get-activedocument (vlax-get-acad-object))
  75.            )
  76.          )
  77.          pts
  78.        )
  79.        (mapcar 'entdel ents)
  80.   )
  81.   (princ)
  82. )
 楼主| 发表于 2013-8-10 09:58:50 | 显示全部楼层
这个程序是干什么用?
发表于 2013-8-10 13:13:48 | 显示全部楼层
画完一条线就回车结束,不要再继续点击左键了……或你把你的问题说清楚点?比方说你感到有何不便……
发表于 2013-8-12 10:05:44 | 显示全部楼层
怀疑你的 LINE 命令被重新定义了,或许是中了 lsp 病毒造成的;试试 .line 命令,就在 line 前加个小数点,这个应该是正常的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 12:53 , Processed in 0.145568 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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