明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 687|回复: 10

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

[复制链接]
发表于 2023-12-5 11:21 | 显示全部楼层 |阅读模式
直接输入尺寸就可以生成这样的长方形的lisp怎么写


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-12-5 12:14 | 显示全部楼层
基础的参数制图 全是计算 主要用polar函数  然后画直线多段线
发表于 2023-12-5 13:39 | 显示全部楼层
先用command写。你怎么在命令输入的,就怎么写
发表于 2023-12-5 14:43 | 显示全部楼层
(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 | 显示全部楼层
本帖最后由 夏生生 于 2023-12-5 19:51 编辑

试试

  1. (defun c:tt  (/ str->l a b lst pt str1 str2)
  2.     (defun str->l  (Str Key / i s lst)
  3.   (while (setq i (vl-string-search Key Str))
  4.       (setq s   (substr Str 1 i)
  5.       Str (substr Str
  6.             (+ 1
  7.          (strlen key)
  8.          (if i
  9.              i
  10.              0)))
  11.       Lst (cons s Lst)))
  12.   (vl-remove "" (reverse (cons str Lst))))
  13.     (setq str1 (getstring "\n横向尺寸(a,b,c..):")
  14.     str1 (mapcar 'atof (str->l str1 ","))
  15.     str2 (getstring "\n纵向尺寸(a,b,c..):")
  16.     str2 (mapcar 'atof (str->l str2 ","))
  17.     pt   (getpoint "\n插入点:")
  18.     a    0
  19.     lst  (mapcar
  20.        '(lambda (x)
  21.       (setq a  (+ a x)
  22.             b  0)
  23.       (mapcar  '(lambda (y) (list (setq b (+ b y)) a))
  24.         (cons 0 str1)))
  25.        (cons 0 str2)))
  26.     (foreach n  lst
  27.   (mapcar
  28.       '(lambda (x y)
  29.      (entmake
  30.          (list '(0 . "line")
  31.          (cons 10 (trans (mapcar '+ pt x) 1 0))
  32.          (cons 11 (trans (mapcar '+ pt y) 1 0)))))
  33.       n
  34.       (cdr n)))
  35.     (setq lst (apply 'mapcar (cons 'list lst)))
  36.     (foreach n  lst
  37.   (mapcar
  38.       '(lambda (x y)
  39.      (entmake
  40.          (list '(0 . "line")
  41.          (cons 10 (trans (mapcar '+ pt x) 1 0))
  42.          (cons 11 (trans (mapcar '+ pt y) 1 0)))))
  43.       (cdr n)
  44.       n)))

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-12-5 19:45 | 显示全部楼层
感谢各位大神
 楼主| 发表于 2023-12-6 09:30 | 显示全部楼层
感谢各位大神
发表于 2023-12-6 11:25 | 显示全部楼层
飞雪神光 发表于 2023-12-5 12:14
基础的参数制图 全是计算 主要用polar函数  然后画直线多段线

如果是复杂图形,几百条线段有没简化方式? 比如组合?
发表于 2023-12-6 11:55 | 显示全部楼层
本帖最后由 bai2000 于 2023-12-6 12:04 编辑

不错,不错,
发表于 2023-12-6 13:47 | 显示全部楼层
水洗可口可乐 发表于 2023-12-6 11:25
如果是复杂图形,几百条线段有没简化方式? 比如组合?

如果是会因参数变化而变化的就要挨个画  如果不变 可以弄个类似打包的 比如 打包图块一类的 明经上也有
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-2 18:10 , Processed in 0.395550 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表