好的,我知道了,没人明白我想要什么。。。(对不起,我妻子只给了我5分钟
好啊一张1000字的图片。。。
在所附的图片中,你可以看到我试图实现的目标,希望我的问题是在每次循环迭代的不同位置设置中点。
这是我设法编写的代码,为了解决这个问题,我创建了一个列表(list’(+-),每次循环迭代我都试图用(car list)和than(reverse list)调用该列表,因此每次迭代都会触发不同的函数。
- [color="red"][b](setq opr (list '(+ -)))[/b][/color]
- (setvar "orthomode" 1)
- (defun rebarseq (/ plst fstpt mdlpt endpt pinp mid clk cclk p1 p2 ang dis)
- (setq plst (cons (getpoint "\nPick first point") plts))
- (while plst
- (if (= (length plst) 1) ;_if its the first iteration
- (progn
- (setq plst (cons (getpoint (car plst) "\nPick second point") plst))
- (setq ang (angle (car plst) (cadr plst)))
- (setq dis (distance (car plst) (cadr plst)))
- (setq mid (getmid (car plst) (cadr plst)))
- (command "_point" mid)
- (setq clk (polar mid ang (+ (/ dis 2.0) 50.0))) ;_polar helf distance + 50
- (setq cclk (polar mid (+ ang pi) (+ (/ dis 2.0) 50.0))) ;_polar helf distance + 50
- (entmakex (list (cons 0 "LINE") (cons 10 clk) (cons 11 cclk)))
- ) ;_ end of progn
- (progn ;_if its not the first iteration
- (setq plst (cons (getpoint (car plst) "\nPick next point") plst))
- (setq dis (distance (car plst) (cadr plst)))
- (setq mid (polar (getmid (car plst) (cadr plst))
- ([color="red"][b](car opr)[/b][/color] ang (/ pi 2))
- 20.0
- ) ;_ end of polar
- ) ;_ end of setq
- [color="blue"] (reverse opr)[/color]
- (command "_point" mid)
- (setq clk (polar mid ang (+ (/ dis 2.0) 50.0))) ;_polar helf distance + 50
- (setq cclk (polar mid (+ ang pi) (+ (/ dis 2.0) 50.0))) ;_polar helf distance + 50
- (entmakex (list (cons 0 "LINE") (cons 10 clk) (cons 11 cclk)))
-
- ) ;_ end of progn
- ) ;_ end of if
- ) ;_ end of while
- ) ;_ end of defun
- (defun getmid (p1 p2)
- (list ;_get mid point
- (/ (+ (car p1) (car p2)) 2.0)
- (/ (+ (cadr p1) (cadr p2)) 2.0)
- ) ;_ end of list
- ) ;_ end of defun
所以如何将+函数作为参数传递给((car opr)ang(/pi 2))?
希望现在清楚了
谢谢
谢伊
|