本帖最后由 moshouhot 于 2012-7-23 20:35 编辑
我在论坛里搜索了一个LSP程序,已经能部分实现我想要的功能,但希望各位大侠能把这段代码完善一下,谢谢各位了:
 - ;;;“赖版”程序作一点小小的修改;;;
- ;;;---------------;;;
- (defun C:OFFSETS (/ A S N PT1 AA AAA AL)
- (setq A "")
- (while (= A "")
- (setq A (getstring "\nSpecify offset distance :"))
- ;;输入如:2/6/23…..
- )
- (setq A (strcat A "/"))
- (prompt "\nSelect object to offset: ")
- (while (= AA nil)
- (setq AA (entsel))
- )
- (initget 1)
- (setq PT1 (getpoint "\nSpecify point on side to offset: "))
- (setq AL (+ (strlen A) 1))
- (setq N 1)
- (setq S "" S0 0)
- (setq AAA (car AA))
- (while (not (= N AL))
- (if (= (substr A N 1) "/")
- (progn
- (setq s0 (+ s0 (atof s)))
- (command "_.offset" S0 AAA PT1 "")
- (setq S "")
- )
- (setq S (strcat S (substr A N 1)))
- )
- (setq N (1+ N))
- )
- (princ)
- )
这个LSP可以根据我输入的如:2/6/23,将线段进行几次偏移。
1、因为我要做一条道路,全线都要偏移,能不能把第一次输入的值记录下来,第二次使用的时候作为默认值对下一个线段进行偏移。
2、偏移的时候,它会提示选择偏移的方向,可不可以在选项里面加一个,如果不选择方向直接空格就默认两侧都进行偏移。
3、还有个小小的请求,能实现最好。就是输入数值的时候可不可以用空格代替“/”,如2 6 23这样,不能实现也没事,关键是前面2个。
|