autolisp如何绘制水平矩形图形?

城市荆棘鸟2022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
武功不行照样拽 共回答了18个问题 | 采纳率88.9%
(defun c:tt()
(setq p1 (getpoint "n选取矩形第一点:>"))
(setq p2 (getpoint "n选取矩形第二点:>"))
(command "_rectang" p1 p2)
(prin1)
)

这是最简单的画矩形的程序
1年前

相关推荐

编写一个AutoLISP程序,画一个边长为S1、S2,夹角为W的平行四边形,程序还应提示用户输入起点PT1,长度S1、S
编写一个AutoLISP程序,画一个边长为S1、S2,夹角为W的平行四边形,程序还应提示用户输入起点PT1,长度S1、S2及夹角W.
回答这个就行,
chongchong10051年前1
xiexie8777 共回答了21个问题 | 采纳率95.2%
编写一个AutoLISP程序,画出一个带中心线的圆.该程序应提示用户输入圆的(defun c:yx(/ p0 p1 p2 p3 p4 r jiao cmd os ) (setq r (
autolisp画平面图形,程序如图,想画左边的图形,按照我的程序却出来右边这个图形,大神看看我的程序
autolisp画平面图形,程序如图,想画左边的图形,按照我的程序却出来右边这个图形,大神看看我的程序
autolisp画平面图形,程序如图,想画一个左边的图形,但是按照我的程序却出来右边这个图形,不垂直,大神看看我的程序,

执行nn1年前1
路寒云 共回答了15个问题 | 采纳率93.3%
90改为1.57多(pi的一半)
autolisp,想画出两个同心矩形,两个矩形的边距离为20,但不知道为什么变成两个一模一样的矩形,求问?
autolisp,想画出两个同心矩形,两个矩形的边距离为20,但不知道为什么变成两个一模一样的矩形,求问?
(defun c:ban()
;求第一个矩形的点
(setq p1 (getpoint "输入基准点:"))
(setq chang (getreal "n长:"))
(setq gao (getreal "n高:"))
(setq p2 (polar p1 0 chang))
(setq p3 (polar p1 (/ pi 2) gao))
(setq p4 (polar p3 0 chang))
;以下依据 p1、p2、p3、p4 点画矩形
(command "rectang" p1 p4)
;以下mp1、mp2、mp3、mp4确定另一矩形的4个点
(setq mp1 (list (- (car p1) 20) (+(cadr p1) 20)))
(setq mp2 (list (- (car p2) 20) (+(cadr p2) 20)))
(setq mp3 (list (+ (car p3) 20) (-(cadr p3) 20)))
(setq mp4 (list (- (car p4) 20) (-(cadr p4) 20)))
(command "rectang" mp1 mp4)

例如:运行程序后输入1000 和800,那应该出来1000X800和960X760的两个矩形。但结果是两个1000X800的矩形。而且当我不画第一个矩形的时候,960X760的矩形就出来了。
mary853281年前2
清溪逐流 共回答了17个问题 | 采纳率88.2%
下面是我改过的代码,你试一下,应该还有些地方可以再完完善的,比如加上检测矩形大小的语句等.(defun c:ban () ;求第一个矩形的点 (setq p1 (getpoint "输入基准点:")) (setq chang (getreal "n长:")) (setq ...
初学者,想知道下面的AutoLisp程序错在哪里(圆的渐开线)?怎么改
初学者,想知道下面的AutoLisp程序错在哪里(圆的渐开线)?怎么改
(defun c:jkxg(/ p0 jr rmax r dr phi x0 y0 x1 y1 x2 y2)
(graphscr)
(setq p0(getpoint"n输入基圆的圆心:"))
(setq jr(getdist p0"n输入基圆的半径:"))
(setq rmax(getdist "n 输入渐开线的终止极径:"))
(command "circle"p0 r)
(setq dr(getdist "n 输入极径增量:"))
(setq x0(car p0)y0(cadr p0))
(setq r jr)
(setq phi(sprt (- 1 (/ (* r r) (* jr jr))))
(setq x1(+ x0(* r(cos phi)))
(setq y1(+ y0(* r(sin phi)))
(while (< r rmax)
(setq r(+ r dr))
(setq x2(+ x0(* r(cos phi)))
(setq y2(+ y0(* r(sin phi)))
(command "line" ls (list x1 y1)(list x2 y2)"")
(setq ls (list x y))
(setq x1 x2 y1 y2)
编译的时候系统报列表错误.
莫水陆1年前1
jean669833 共回答了16个问题 | 采纳率81.3%
(defun c:jkxg(/ p0 jr rmax r dr phi x0 y0 x1 y1 x2 y2)
(graphscr)
(setq p0(getpoint"n输入基圆的圆心:"))
(setq jr(getdist p0"n输入基圆的半径:"))
(setq rmax(getdist "n 输入渐开线的终止极径:"))
(command "circle"p0 jr)
(setq dr(getdist "n 输入极径增量:"))
(setq x0(car p0)y0(cadr p0))
(setq r jr)
(setq phi(sqrt (- 1 (/ (* r r) (* jr jr)))))
(setq x1(+ x0(* r(cos phi))))
(setq y1(+ y0(* r(sin phi))))
(while (< r rmax)
(setq r(+ r dr))
(setq x2(+ x0(* r(cos phi))))
(setq y2(+ y0(* r(sin phi))))
(command "line" ls (list x1 y1)(list x2 y2)"")
(setq ls (list x y))
(setq x1 x2 y1 y2)
)
)
;;少了好几个)肯定会提示出错的. 还有就是 sqrt 函数不是 sprt .改好了,加载是没问题,不过我随便输入数据画不出图形来,不知道是不是数据问题.
Autolisp 帮解决下难题 (defun c:yzluow(/)(setq b1(getpoint"指定基点:"))
Autolisp 帮解决下难题
(defun c:yzluow(/)
(setq b1(getpoint"指定基点:"))
(setq r1(getreal"n指定初始半径:"))
(setq disp(getreal"n指定节距:"))
(setq angtg(getreal"n输入圆形角:"))
(setq m(getreal"n输入圈数:"))
(setq n(getreal"n输入每圈细化段数:"))
(cond ((null n) (setq n 36)))
(setq delta(/(* 2 pi) n))
(setq j(/ disp n))
(setq bb(caddr b1))
(setq tg(*(/ angta 180) pi))
(setq ang 0)
(setq k 0)
(command "ucs" "o" b1)
(command "3dpoly" (list r1 0 0))
(repeat (* m n))
(setq k(+ k 1))
(setq ang(+ delta ang))
(setq r(- r1 (* (+ 0 (* j k) (/ ( sin tg) (cos tg)))))
(setq pt2(list (* r (cos ang)) (* r (sin ang)) (+ 0 (* j k))))
(command pt2)
)
(command "")
)
运行后 提示
错误:SETQ 中变量名称错误:(SETQ PT1 (LIST (* R (COS ANG)) (* R (SIN
ANG)) (+ 0 (* J K)))) 怎么回事 能帮改改么
songwenfeng731年前2
gtu121 共回答了22个问题 | 采纳率81.8%
程序中变量名前后不一致,有多")"和少")"现象,应如下:
(defun c:yzluow(/)
(setq r1(getreal"n指定初始半径:"))
(setq disp(getreal"n指定节距:"))
(setq angtg(getreal"n输入圆形角:"))
;(setq m(getreal"n输入圈数:"))
;(setq n(getreal"n输入每圈细化段数:"))
;因为repeat后面要求跟整数,所以这两行应改为如下:
(setq m(getint "n输入圈数:"))
(setq n(getint "n输入每圈细化段数:"))
(cond ((null n) (setq n 36)))
(setq delta(/(* 2 pi) n))
(setq j(/ disp n))
(setq bb(caddr b1))
;(setq tg(*(/ angta 180) pi));变量错,应为
(setq tg(*(/ angtg 180) pi))
(setq ang 0)
(setq k 0)
(command "ucs" "o" b1)
(command "3dpoly" (list r1 0 0))
;(repeat (* m n));最后面多一个")"
(repeat (* m n)
(setq k (+ k 1))
(setq ang (+ delta ang))
;(setq r(- r1 (* (+ 0 (* j k) (/ ( sin tg) (cos tg)))));最后面少一个")"
(setq r (- r1 (* (+ 0 (* j k) (/ ( sin tg) (cos tg))))))
(setq pt2 (list (* r (cos ang)) (* r (sin ang)) (+ 0.0 (* j k))))
(command pt2)
)
(command "")
(princ)
)
【AutoLISP】请教:下面这两句语言是一个程序里的两句,
【AutoLISP】请教:下面这两句语言是一个程序里的两句,
(setq str_rr (strcat "n新直径:"))
(setq rr (getdist str_rr))
--------------------------------------
str_rr是一个字符串,(getdist str_rr))是什么意思?rr是那段举例?
其中,old_rr 已定义.
setq rr (getdist str_rr))定义的是哪段距离?
一醉一笑1年前1
闫红艳 共回答了18个问题 | 采纳率94.4%
(getdist str_rr))就是要求用户定义2个点做为距离,
setq rr (getdist str_rr))就是把前面的距离值赋予给rr变量
求助Autolisp:定义一个求三角形面积的函数.
求助Autolisp:定义一个求三角形面积的函数.
就是利用autolisp编写一个求三角形面积的二次开发.我选择任意三点,就可算出三角行的面积.
恬梦游仙1年前2
540991324 共回答了20个问题 | 采纳率85%
三角形面积可以用海伦公式
编写一个autolisp程序,从p1点,画线到p2点,然后从p2点画线到p3点,两条线夹角为90°,然后倒圆角R=20,
编写一个autolisp程序,从p1点,画线到p2点,然后从p2点画线到p3点,两条线夹角为90°,然后倒圆角R=20,请问这个程序应该怎么写,我知道画线这个的写法,请问后面倒角应该怎么写?
(setq p1(getpoint"")
(setq p2(polar p1 0 50)
(setq p3(polar p2 (* 0.5 pi) 50))
(command "line" p1 p2 p3 "")
.
请问后面倒角应该怎么写
awstar061年前1
yy000668 共回答了20个问题 | 采纳率85%
(setq p1(getpoint""))
(setq p2(polar p1 0 50))
(setq p3(polar p2 (* 0.5 pi)50))
(command "line" p1 p2 "")
(setq l1 (entlast))
(command "line" p2 p3 "")
(setq l2 (entlast))
(command "FILLET" "R" 20)
(command "FILLET" l1 l2)
编写一个AutoLISP程序,画出一个边长为A的正方形,以及该正方形的内切圆,正方形的底边与正X轴的夹角为ANG
尹娜琳兰1年前1
llp430522 共回答了22个问题 | 采纳率100%
(defun c:zfx(/ A ANG p1 p2 p3 p4 p5 os cmd)
(SETQ CMD (GETVAR "cmdecho"))
(SETVAR "cmdecho" 0)
(setq os (getvar "osmode"))
(setq A (getreal"n:输入边长"))
(setq ANG (getreal"n:输入角度"))
(setq p1 (getpoint"n:指定起点"))
(setvar "osmode" 0)
(setq p2 (polar p1 (* pi (/ ANG 180)) A))
(setq p3 (polar p2 (* pi (+ 0.5 (/ ANG 180))) A))
(setq p4 (polar p1 (* pi (+ 0.5 (/ ANG 180))) A))
(command "pline" p1 p2 p3 p4 "c")
(SETQ p5 (polar p1 (+ (* pi (/ ANG 180)) (* 0.25 pi)) (* A (sin (/ pi 4)))))
(command "circle" p5 (* 0.5 A))
(setvar "osmode" os)
(SETVAR "cmdecho" CMD)
(PRINC)
)
编写一个AutoLISP程序,画出一个边长为A的正方形,以及该正方形的内切圆,正方形的底边与正X轴的夹角为ANG
编写一个AutoLISP程序,画出一个边长为A的正方形,以及该正方形的内切圆,正方形的底边与正X轴的夹角为ANG
程序还应提示用户输入起点P1,长度S及角ANG.
wd03171年前1
ljwa666 共回答了18个问题 | 采纳率88.9%
(defun c:zfx(/ A ANG p1 p2 p3 p4 p5 os cmd)
(SETQ CMD (GETVAR "cmdecho"))
(SETVAR "cmdecho" 0)
(setq os (getvar "osmode"))
(setq A (getreal"n:输入边长"))
(setq ANG (getreal"n:输入角度"))
(setq p1 (getpoint"n:指定起点"))
(setvar "osmode" 0)
(setq p2 (polar p1 (* pi (/ ANG 180)) A))
(setq p3 (polar p2 (* pi (+ 0.5 (/ ANG 180))) A))
(setq p4 (polar p1 (* pi (+ 0.5 (/ ANG 180))) A))
(command "pline" p1 p2 p3 p4 "c")
(SETQ p5 (polar p1 (+ (* pi (/ ANG 180)) (* 0.25 pi)) (* A (sin (/ pi 4)))))
(command "circle" p5 (* 0.5 A))
(setvar "osmode" os)
(SETVAR "cmdecho" CMD)
(PRINC)
)
怎么用Autolisp编写程序画一个外切半径为100的六角星
sokuny1年前2
瓷心人 共回答了19个问题 | 采纳率89.5%
(defun c:cp ()
(setvar "cmdecho" 0)
(setq cenpt
x09 (getpoint "输入圆心:")
x09)
(setq rad
x09 (getdist cenpt "输入半径:")
x09)
(setq num
x09 (getint "n 输入多边形边数:")
x09)
(command "polygon" num cenpt "i" rad)
(prin1)
)
我编的这个没有指定半径和多边形的边数,你可以任意输入,加载完以后,在cad命令中输入cp,依次输入圆心、半径、边数,就可以出来多边形了.你要是规定了半径和边数是100和6,那就用下面的,只要点个圆心就好了.
(defun c:cp ()
(setvar "cmdecho" 0)
(setq cenpt
x09 (getpoint "输入圆心:")
x09)
(command "polygon" 6 cenpt "i" 100)
(prin1)
)

大家在问