你指的是模拟AutoCAD的line命令画直线吗?那可以这样:
1. 在cad中输入: (command "line")
2. 根据cad ...
谢谢您的热心指点
感觉有时手工操作与编写程序还是有点区别的
还是要慢慢学习摸索
谢谢您 ynhh 发表于 2023-10-2 21:34
我看你的示范
和手工画图一样的
这不用什么程序都可以办到的
二、起点 A 带角度 J画指定距离L 的直线,直接用输入角度 <J 的方法 这不就是你需求的吗 也是line命令所具有的功能啊 (defun c:lll(/ QD ZD)
(setq qd(getpoint "\n 请点取直线的起点"))
(setq zd(getpoint qd "\n 点取终点或输入坐标值,或输入<加角度值,再输入距离:"))
(entmake (list '(0 . "line") (cons 10 qd) (cons 11 zd) ))
(princ)
)
这就是模拟line命令的代码
guosheyang 发表于 2023-10-2 18:05
是这样模拟line命令吗用get函数写一个就是 get函数本身有这个功能
guosheyang 发表于 2023-10-3 09:52
(defun c:lll(/ QD ZD)
(setq qd(getpoint "\n 请点取直线的起点"))
(setq zd(getpoint qd "\n 点取 ...
谢谢您的热心指导 一、起点 A 以 B 点为方向控制点, 画指定距离L 的直线 这个目标也可借助grread函数变相实现
在论坛上找的类似命令
;;;动态角度矩形
(defun c:are (/ os pt1 pt2 pt3 pt4 ag0 ag len ent ct in k)
(setq os (getvar "osmode"))
(while (and (setq pt1 (getpoint "\n角点1:"))
(setq ag0(getangle pt1 "角度:"))
(progn (princ "对角点:") (setq ct t))
(progn
(setq ct t k t ent nil)
(while ct
(setq in (grread 1))
(cond
((= 5 (car in))
(setq pt3 (cadr in))
(setq len (distance pt1 pt3) ag(angle pt1 pt3) )
(setq pt2 (polar pt1 ag0 (* len (cos (- ag ag0)))))
(setq pt4 (polar pt1 (+ (/ pi 2.) ag0) (* len (sin (- ag ag0)))))
(if ent (command "erase" ent ""))
(setvar "osmode" 0)
(command "pline" pt1 pt2 pt3 pt4 "c" )
(setvar "osmode" os)
(setq ent (entlast))
)
((= 3 (car in))
(setq pt3 (cadr in))
(setq len (distance pt1 pt3) ag(angle pt1 pt3) )
(setq pt2 (polar pt1 ag0 (* len (cos (- ag ag0)))))
(setq pt4 (polar pt1 (+ (/ pi 2.) ag0) (* len (sin (- ag ag0)))))
(if ent (command "erase" ent ""))
(setvar "osmode" 0)
(command "pline" pt1 pt2 pt3 pt4 "c" )
(setvar "osmode" os)
(setq ent (entlast))
(setq ct nil)
)
((equal '(11 0) in)
(if ent (command "erase" ent ""))
(setq ct nil k nil)
)
(t)
)
)
k
)
)
)
(setvar "osmode" os)
(princ)
)
页:
1
[2]