明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5328|回复: 23

[基础] 本人萌新)请教一个lisp思路 选定的矩形里面怎样画它的对角线?

[复制链接]
发表于 2017-8-31 14:09 | 显示全部楼层 |阅读模式
如何在选定的矩形里面怎样用lisp画它的对角线? 请大神教导
发表于 2017-8-31 16:01 | 显示全部楼层
本帖最后由 fangmin723 于 2017-8-31 16:44 编辑


  1. (defun c:tt(/ ent entdata ptlst)
  2.   (if (and (= "LWPOLYLINE" (cdr (assoc 0 (setq entdata (entget (setq ent (car (entsel)))))))) (= 4 (cdr (assoc 90 entdata))) (= 1 (cdr (assoc 70 entdata))))
  3.     (progn
  4.       (setq ptlst nil)
  5.       (foreach x entdata
  6.         (if (= (car x) 10) (setq ptlst (cons (cdr x) ptlst)))
  7.       )
  8.       (setq ptlst (reverse ptlst))
  9.       (entmake (list '(0 . "LINE") (cons 10 (car ptlst)) (cons 11 (caddr ptlst))))
  10.       (entmake (list '(0 . "LINE") (cons 10 (cadr ptlst)) (cons 11 (cadddr ptlst))))
  11.     )
  12.     (alert "选择错误,请选择封闭的四边形!")
  13.   )
  14.   (prin1)
  15. )

本帖子中包含更多资源

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

x
回复 支持 3 反对 0

使用道具 举报

发表于 2018-5-10 22:31 | 显示全部楼层
qwerqweraaa 发表于 2018-5-10 22:04
目的就是框选所有矩形,批量加对角线,我不知道具体循环代码怎么写, 上面贴的代码是全的,是我从其他lis ...

http://bbs.mjtd.com/thread-99400-1-1.html
回复 支持 1 反对 0

使用道具 举报

发表于 2018-5-11 10:20 | 显示全部楼层
qwerqweraaa 发表于 2018-5-10 22:04
目的就是框选所有矩形,批量加对角线,我不知道具体循环代码怎么写, 上面贴的代码是全的,是我从其他lis ...

全,全个鬼啊,你贴的代码,defun都没有!

这个也是我发的

算了,给你把

  1. (defun c:tt1(/ ent ent_get entdata kye n ptlst)
  2.   (setq n 0 kye T)
  3.   (while key
  4.     (if (setq ent_get (ssget (list '(0 . "LWPOLYLINE") '(90 . 4) '(70 . 1))))
  5.       (repeat (sslength ent_get)
  6.         (setq ptlst nil entdata (entget (ssname ent_get n)))
  7.         (foreach x entdata
  8.           (if (= (car x) 10) (setq ptlst (cons (cdr x) ptlst)))
  9.         )
  10.         (setq ptlst (reverse ptlst))
  11.         (entmake (list '(0 . "LINE") (cons 10 (car ptlst)) (cons 11 (caddr ptlst))))
  12.         (entmake (list '(0 . "LINE") (cons 10 (cadr ptlst)) (cons 11 (cadddr ptlst))))
  13.         (setq n (+ n 1))
  14.       )
  15.       (progn
  16.         (setq kye nil)
  17.         (alert "选择错误,请选择封闭的四边形!")
  18.       )
  19.     )
  20.    
  21.   )
  22.   (prin1)
  23. )


本帖子中包含更多资源

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

x
发表于 2017-8-31 15:37 | 显示全部楼层
当我是个新手

先去找一个函数能返回四个点
1 3 ; 2 4 对连

or
找一个函数能返回左下右上(1 3)
再配出 (2 4) 两个点

但如果非是坐水平坐向的 此法无效...
 楼主| 发表于 2017-8-31 16:43 | 显示全部楼层
 楼主| 发表于 2017-8-31 16:43 | 显示全部楼层
Andyhon 发表于 2017-8-31 15:37
当我是个新手

先去找一个函数能返回四个点

感谢提示,我照着你的提示去尝试看看)
发表于 2017-8-31 16:46 | 显示全部楼层
mnmnvmm2 发表于 2017-8-31 16:43
感谢提示,我照着你的提示去尝试看看)

之前忘了声明局部变量了,我加进去了!

本帖子中包含更多资源

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

x
发表于 2017-9-1 07:54 | 显示全部楼层
感谢分享程序!!!!
发表于 2017-9-1 08:15 | 显示全部楼层
yoyoho 发表于 2017-9-1 07:54
感谢分享程序!!!!

不谢!!!!:D
发表于 2018-5-10 09:22 | 显示全部楼层

大神你好,这个LISP很好用,我想把它变成框选,用(SETQ ENT_SET (SSGET '((-4 . "<AND") (0 . "LWPOLYLINE") (90 . 4) (70 . 1) (-4 . "AND>"))))自动识别,再用循环进行批量操作,由于初次接触,昨天试了一天没成功,能不能麻烦你修改一下,谢谢!
发表于 2018-5-10 12:32 | 显示全部楼层
qwerqweraaa 发表于 2018-5-10 09:22
大神你好,这个LISP很好用,我想把它变成框选,用(SETQ ENT_SET (SSGET '((-4 . ""))))自动识别,再用循 ...

(SETQ ENT_SET (SSGET (list '(0 . "LWPOLYLINE") '(90 . 4) '(70 . 1))))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-18 13:19 , Processed in 0.310451 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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