277283904 发表于 2023-12-5 11:21:51

直接输入尺寸就可以生成这样的长方形的lisp怎么写

直接输入尺寸就可以生成这样的长方形的lisp怎么写


飞雪神光 发表于 2023-12-5 12:14:48

基础的参数制图 全是计算 主要用polar函数然后画直线多段线

自贡黄明儒 发表于 2023-12-5 13:39:13

先用command写。你怎么在命令输入的,就怎么写

lailaifa 发表于 2023-12-5 14:43:18

(defun c:tt (/ osm sg-cd sg-df sg-dfjl sg-kd sg-pt0 sg-pt1 sg-pt2 sg-pt3 sg-pt4 sg-pt5 sg-pt6 sg-ss)
        (setvar "CMDECHO" 0)
        (setvar"cmdecho"0)
(setvar"blipmode"0)
        (setq osm (getvar "OSMODE"))
        (setq sg-cd (getreal "\n 输入长度:")
                sg-kd (getreal "\n 输入宽度:")
                sg-df (getreal "\n 输入等分数:")
                sg-pt0 (getpoint "\指定插入点:")
                sg-pt1 (polar sg-pt0 0 (/ sg-cd 2.))
                sg-pt2 (polar sg-pt1 (* pi 0.5) (/ sg-kd 2.))
                sg-pt3 (polar sg-pt0 pi (/ sg-cd 2.))
                sg-pt4 (polar sg-pt3 (* pi 1.5) (/ sg-kd 2.))
                sg-dfjl (/ (distance sg-pt1 sg-pt3) sg-df)
                sg-pt5 (polar sg-pt4 0 sg-dfjl)
                sg-pt6 (polar sg-pt5 (* pi 0.5) sg-kd)
        )
        (command "RECTANG" "non" sg-pt2 "non" sg-pt4)
        (command "LINE" "non" sg-pt5 "non" sg-pt6 "")
        (setq sg-ss (entlast))
        (command "-ARRAY" sg-ss "" "R" "1" (rtos sg-df) (rtos sg-dfjl))
        (princ "\n绘制完毕!")       
        (setvar "OSMODE" osm)
        (princ)
)

夏生生 发表于 2023-12-5 19:33:18

本帖最后由 夏生生 于 2023-12-5 19:51 编辑

试试

(defun c:tt(/ str->l a b lst pt str1 str2)
    (defun str->l(Str Key / i s lst)
(while (setq i (vl-string-search Key Str))
      (setq s   (substr Str 1 i)
      Str (substr Str
            (+ 1
         (strlen key)
         (if i
             i
             0)))
      Lst (cons s Lst)))
(vl-remove "" (reverse (cons str Lst))))
    (setq str1 (getstring "\n横向尺寸(a,b,c..):")
    str1 (mapcar 'atof (str->l str1 ","))
    str2 (getstring "\n纵向尺寸(a,b,c..):")
    str2 (mapcar 'atof (str->l str2 ","))
    pt   (getpoint "\n插入点:")
    a    0
    lst(mapcar
       '(lambda (x)
      (setq a(+ a x)
            b0)
      (mapcar'(lambda (y) (list (setq b (+ b y)) a))
      (cons 0 str1)))
       (cons 0 str2)))
    (foreach nlst
(mapcar
      '(lambda (x y)
   (entmake
         (list '(0 . "line")
         (cons 10 (trans (mapcar '+ pt x) 1 0))
         (cons 11 (trans (mapcar '+ pt y) 1 0)))))
      n
      (cdr n)))
    (setq lst (apply 'mapcar (cons 'list lst)))
    (foreach nlst
(mapcar
      '(lambda (x y)
   (entmake
         (list '(0 . "line")
         (cons 10 (trans (mapcar '+ pt x) 1 0))
         (cons 11 (trans (mapcar '+ pt y) 1 0)))))
      (cdr n)
      n)))

paulpipi 发表于 2023-12-5 19:45:57

感谢各位大神

277283904 发表于 2023-12-6 09:30:48

感谢各位大神

水洗可口可乐 发表于 2023-12-6 11:25:41

飞雪神光 发表于 2023-12-5 12:14
基础的参数制图 全是计算 主要用polar函数然后画直线多段线

如果是复杂图形,几百条线段有没简化方式? 比如组合?

bai2000 发表于 2023-12-6 11:55:28

本帖最后由 bai2000 于 2023-12-6 12:04 编辑

夏生生 发表于 2023-12-5 19:33
试试
不错,不错,

飞雪神光 发表于 2023-12-6 13:47:00

水洗可口可乐 发表于 2023-12-6 11:25
如果是复杂图形,几百条线段有没简化方式? 比如组合?

如果是会因参数变化而变化的就要挨个画如果不变 可以弄个类似打包的 比如 打包图块一类的 明经上也有
页: [1] 2
查看完整版本: 直接输入尺寸就可以生成这样的长方形的lisp怎么写