szx025 发表于 2015-2-25 11:07:51

完善均分程序

(defun C:lg (/ pt1 pt2 l p1 p2 P3 P4 P5 P6 K setq old_OS old_CMD)
;;保存系统变量设置
    (setq old_OS(getvar "OSMODE")
      old_CMD (getvar "CMDECHO")
    )
   
    (setvar "CMDECHO" 0)
    (command "-osnap" "INT")
(setq pt1 (getpoint "\n左下角点:"))
(setq pt2 (getpoint pt1 "\n右下角点:"))
(setvar "OSMODE" 0)
(setq p1 (polar pt1 (/ pi 2.0) 400))
(setq p2 (polar pt2 (/ pi 2.0) 400))
(setq p3 (polar pt1 (/ pi 2.0) 800))
(setq p4 (polar pt2 (/ pi 2.0) 800))
(setq p5 (polar pt1 (/ pi 2.0) 1200))
(setq p6 (polar pt2 (/ pi 2.0) 1200))
(command "line" p1 p2 "")
(command "line" p3 p4 "")
(command "line" p5 p6 "")
(command "line" pt2 p6 "")
(command "line" pt1 p5 "")
(command "line" pt1 pt2 "")
(setq k (angle pt1 pt2))
(setq L (distance pt1 pt2))
(setq N (/ L 1200))
(setq I 1)
(setq P0 Pt1)
(while (<= i N)
(setq P1 (polar p0 (/ pi 2.0) 1200))
(command "line" p0 p1 "")
(setq p0 (polar p0 k 1200))
(setq I (+ i 1))
)
;;恢复系统变量设置
    (setvar "CMDECHO" old_CMD)
    (setvar "OSMODE" old_OS)
    (setq *error* olderr)
(princ)
)
大家新年好。我写的一个小玩意,竖直线的间距是1200,但当最后的距离大于1200小于2400时,最后的距离就是这个值。这个不是我想要得效果,我的想法是当整个长度不是1200的整数倍时,让竖直线的间距按接近1200的值均分这个长度。请高手完善一下

xyp1964 发表于 2015-2-25 12:47:54

;; tt(间距均分)
(defun c:tt ()
(setq int (Uint 1 "" "垂直数量" int))
(while (and (setq pt1 (getpoint "\n左下角点: "))
              (setq pt2 (getpoint pt1 "\n右下角点: "))
       )
    (setq ll(distance pt1 pt2)
          dd1 (/ ll 1200.)
          nn(fix dd1)
          nn(if (= nn dd1)
                nn
                (1+ nn)
              )
          s1(xyp-line pt1 pt2)
          s2(xyp-line pt1 (xyp-Pt2Y pt1 (* int 400)))
    )
    (xyp-ArrayRV s1 (1+ int) 400)
    (xyp-ArrayRH s2 (1+ nn) (/ ll nn 1.))
)
(princ)
)

szx025 发表于 2015-2-25 14:29:58

谢谢院长,xyp-line xyp-ArrayRV xyp-ArrayRH你的这几个函数能否提供一下

鱼与熊掌 发表于 2015-2-25 14:34:58

;生成直线(defun cx-mak-line (pt1 pt2 )
(entmakex (list '(0 . "LINE") (cons 10 pt1) (cons 11 pt2)))
)

鱼与熊掌 发表于 2015-2-25 14:36:18

关于2个阵列.(vla-ArrayRectangulartc_en_obj rc_chang rc_kuan 1 *small_a *small_a 0.0)

ZZXXQQ 发表于 2015-2-26 08:32:55

(defun C:lg (/ pt1 pt2 l p1 p2 P3 P4 P5 P6 K old_OS)
;;保存系统变量设置
(setq old_OS (getvar "OSMODE"))
(setvar "OSMODE" 32);INT
(setq pt1 (getpoint "\n左下角点: "))
(setq pt2 (getpoint pt1 "\n右下角点: "))
(setvar "OSMODE" 0)
(setq k (angle pt1 pt2))
(setq L (distance pt1 pt2))
(setq N (fix (/ L 1200)))
(setq dst (/ L N))
(setq p1 (polar pt1 (/ pi 2) 400))
(setq p2 (polar pt2 (/ pi 2) 400))
(setq p3 (polar pt1 (/ pi 2) 800))
(setq p4 (polar pt2 (/ pi 2) 800))
(setq p5 (polar pt1 (/ pi 2) 1200))
(setq p6 (polar pt2 (/ pi 2) 1200))
(entmake (list '(0 . "LINE") (cons 10 p1) (cons 11 p2)))
(entmake (list '(0 . "LINE") (cons 10 p3) (cons 11 p4)))
(entmake (list '(0 . "LINE") (cons 10 p5) (cons 11 p6)))
(entmake (list '(0 . "LINE") (cons 10 p6) (cons 11 pt2)))
(entmake (list '(0 . "LINE") (cons 10 pt2) (cons 11 pt1)))
(entmake (list '(0 . "LINE") (cons 10 pt1) (cons 11 p5)))
(setq P0 Pt1)
(repeat (1- N)
(setq p0 (polar p0 k dis))
(setq P1 (polar p0 (/ pi 2) 1200))
(entmake (list '(0 . "LINE") (cons 10 p0) (cons 11 p1)))
)
(setvar "OSMODE" old_OS)
(princ)
)

szx025 发表于 2015-2-26 11:29:23

错误: 输入的列表有缺陷

llsheng_73 发表于 2015-3-4 14:57:59

鱼与熊掌 发表于 2015-2-25 14:34 static/image/common/back.gif
;生成直线

(defun line(argments);;argments==>(list p1 p2 图层 颜色 线型 厚度 线宽)p2以后可依次省略
(entmakex(mapcar'cons'(0 10 11 8 62 6 39 370)(cons"line"argments))))

ymcui 发表于 2015-3-4 16:36:28

ZZXXQQ 发表于 2015-2-26 08:32 static/image/common/back.gif
请问如何画出方框里红色的平分线?谢谢
页: [1]
查看完整版本: 完善均分程序