需要这方面的帮助
各位读者好,嗯,我正在做一个例行工作,我会贴一张照片给你看。
但我想选择在左边或右边复制这个
所以我用函数getkword,if和progn来模拟它。
现在,当我选择正确的时候,它不起作用。
这是
(defun c:cofp (/ rep pt1 pt2)
(setq pt1 (getpoint "\nClick on the first point ! "))
(setq pt2 (getpoint "\nClick on the second point ! "))
(initget 1 "left right")
(setq rep (getkword "\nChoose the side of the beam "))
(if (= rep Gauche)
(progn
(setq pt3 (list (- (car pt2) 20) (cadr pt2)))
(setq pt4 (list (- (car pt1) 20) (cadr pt1)))
(setq pt5 (list (- (car pt4) 90) (+ (cadr pt4) 20)))
(setq pt6 (list (- (car pt4) 90) (cadr pt4)))
(setq pt7 (list (car pt3) (- (cadr pt3) 38)))
(setq pt8 (list (car pt3) (- (cadr pt3) 76)))
);progn
);if
(if (= rep Droite)
(progn
(setq pt3 (list (+ (car pt2) 20) (cadr pt2)))
(setq pt4 (list (+ (car pt1) 20) (cadr pt1)))
(setq pt5 (list (+ (car pt4) 90) (+ (cadr pt4) 20)))
(setq pt6 (list (+ (car pt4) 90) (cadr pt4)))
(setq pt7 (list (car pt3) (- (cadr pt3) 38)))
(setq pt8 (list (car pt3) (- (cadr pt3) 76)))
);progn
);if
(setq os (getvar 'OSMODE))
(setvar 'OSMODE 0)
(command "_insert" "2 x 4" pt6 "" "1" "")
(command "_insert" "2 x 4" pt7 "" "1" "")
(command "_insert" "2 x 4" pt8 "" "1" "")
(command "_rectangle" pt1 pt3)
(command "_rectangle" pt4 pt5)
(command "_rectangle" pt5 pt8)
(setvar 'OSMODE os)
);defun c:
就是这样!
提前感谢您的帮助!
干杯,啤酒。 尝试
(defun c:cofp (/ rep pt1 pt2)
(setq pt1 (getpoint "\nClick on the first point ! "))
(setq pt2 (getpoint "\nClick on the second point ! "))
(initget 1 "L R")
(setq rep (getkword "\nChoose the side of the beam "))
(if (= rep "L")
(progn
(setq pt3 (list (- (car pt2) 20) (cadr pt2)))
(setq pt4 (list (- (car pt1) 20) (cadr pt1)))
(setq pt5 (list (- (car pt4) 90) (+ (cadr pt4) 20)))
(setq pt6 (list (- (car pt4) 90) (cadr pt4)))
(setq pt7 (list (car pt3) (- (cadr pt3) 38)))
(setq pt8 (list (car pt3) (- (cadr pt3) 76)))
);progn
);if
(if (= rep "R")
(progn
(setq pt3 (list (+ (car pt2) 20) (cadr pt2)))
(setq pt4 (list (+ (car pt1) 20) (cadr pt1)))
(setq pt5 (list (+ (car pt4) 90) (+ (cadr pt4) 20)))
(setq pt6 (list (+ (car pt4) 90) (cadr pt4)))
(setq pt7 (list (car pt3) (- (cadr pt3) 38)))
(setq pt8 (list (car pt3) (- (cadr pt3) 76)))
);progn
);if
(setq os (getvar 'OSMODE))
(setvar 'OSMODE 0)
(command "_insert" "2 x 4" pt6 "" "1" "")
(command "_insert" "2 x 4" pt7 "" "1" "")
(command "_insert" "2 x 4" pt8 "" "1" "")
(command "_rectangle" pt1 pt3)
(command "_rectangle" pt4 pt5)
(command "_rectangle" pt5 pt8)
(setvar 'OSMODE os)
);defun c:
嗨,谢谢你的帮助!我想我忘了“ 这是我的荣幸。 一个较短的方法可能是2次点击第一个选择-选择线,你可以得到开始和结束点,然后比较选择点,找出顶部-底部等交换点-第二个选择是所需的方向。
代码受版权保护,但只是一个片段
(setq tp1 (entsel "\nSelect left side inner wall near end : "))
(setq tpp1 (entget (car tp1)))
(setq pt1 (cdr (assoc 10 tpp1))) ;start
(setq pt2 (cdr (assoc 11 tpp1))) ; end
(setq pt3 (cadr tp1)) ;pick point
Just compare distance pt3-pt1 pt3-pt2 the shorter is your start point.
嗨,比格尔,
我尝试了你发布的内容,但我不确定当它是pline时是否有效。
但是,既然我想确保我的pt1总是在底部,有没有办法做到这一点?
干杯啤酒 我的draw stud是基于一个完整的包,所以它期望你可能会得到的行仍然可以与普林斯,但代码将变得更大,与其他一些东西只是采取了廉价的方式,如果普林斯然后爆炸并继续。
页:
[1]