明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2220|回复: 5

[求助]过线上一点做与线垂直的直线,line 后面的命令该怎样写

[复制链接]
发表于 2010-2-6 14:11:00 | 显示全部楼层 |阅读模式

在平时画图中,用LINE 命令时 指定第一点,然后输入如: <45,第二点就可以按我们需要的角度画出。

现在我想过某直线上一点画与该线垂直的直线,但程序在 (command "line".......那里出错,前辈帮我看一下,

(defun c:ll()
  (setq endata (entget (car(entsel))))
  (setq en1key (cdr (assoc 0 endata)))
  (redraw  (cdr (assoc -1 endata)) 3)
  (cond ((= en1key "LWPOLYLINE") (setq entpp1 (dydd endata)))        
            ((= en1key "LINE")(setq entpp1 (list (assoc 10 endata) (assoc 11 endata))))
     )
  (setq pt1 (cdr (nth 0 entpp1)))
  (setq pt2 (cdr (nth 1 entpp1)))
  (setq ang (/(* 180(+ (angle pt1 pt2) (* 0.5 pi))) pi))
  (setq ang (strcat "<" (rtos ang 2 5)))
  (command "line" pause ang  pause "")
  (redraw  (cdr (assoc -1 endata)) 4)
  (prin1)
  )

;;;dydd多义线顶点提取子程序
(defun dydd (ent / n pp endate key)
  (setq n 0)
  (setq pp '())
  (repeat (length ent)
    (setq endate (nth n ent))
    (setq key (car endate))
    (if (= key 10)
      (setq pp (cons endate pp))
    )
    (setq n (+ n 1))
  )
  (reverse pp)
)

发表于 2010-2-6 14:45:00 | 显示全部楼层

看在楼主菜鸟的份上,我随便说说吧,使用command的时候,一定要非常注意,小心,如果你不懂命令的特性,必须自己去cad中按那命令一个个响应,看看自己的语句能不能符合那个命令。

比如(command "line" pt1 pt2 "")这个表示line命令开始,pt1为第一个输入的参数,pt2第二个,""即等于一个空格键(就是一个回车,确认),至于lz的命令要输入角度作为参数的,你自己去cad里面看怎么样才能输入角度来响应。

 楼主| 发表于 2010-2-7 10:21:00 | 显示全部楼层

我试过了,在CAD里面可以运行的。

(command "line")

(getpoint)

<50或者!ang

(getpoint)

<-|

但合在一起就不行了。

发表于 2010-2-7 10:58:00 | 显示全部楼层

最简单的解决方法!还能动态画线->

转UCS到物件,开正交,画线,

返回原UCS和正交.

发表于 2010-2-7 14:55:00 | 显示全部楼层

(command "line" pause ang  pause "")
你可能还要使用极坐标求出(setq p2(polar pt1 Ang 距离))求出另一个点

然后使用(command "line" pt1 pt2 "")就ok了


 楼主| 发表于 2010-2-7 15:34:00 | 显示全部楼层

谢谢飞诗,正交确实是一个好方法。

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

本版积分规则

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

GMT+8, 2024-10-1 23:49 , Processed in 0.170161 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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