乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 43|回复: 3

[编程交流] 帮助:然后查找最长的行

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:31:11 | 显示全部楼层 |阅读模式
你好
我需要一些帮助来设置一系列图形的限制(LIMMIN,LIMMAX)。
限制要设置为标题栏框架,标题栏框架被分解:(有时会移动!我尝试混搭一些lisp,但没有成功。我认为这应该是最简单的方法:
 
-在层“TB”上查找最长的行[应在标题栏层上查找2行(顶部和底部)]。
-找到左下角,从找到的线的坐标中找到右上角。
-相应地分配LIMMIN和LIMMAX。
 
可选:删除LIMMIN和LIMMAX之外的所有内容。
 
“Lee Mac”和“alanjt”的Lisp程序让我开始:
http://www.cadtutor.net/forum/archive/index.php/t-51523.html
 
 
谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:52:30 | 显示全部楼层
欢迎来到CADTutor luctifo。
 
考虑以下功能:
 
http://lee-mac.com/ssboundingbox.html
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:21:41 | 显示全部楼层
谢谢你的帮助!
 
  1. (defun c:TBLimits (/ ss i l1 l2 ll ur bb)
  2. ; With help from function "SelectionSet BoundingBox" by Lee Mac
  3. (setq ss (ssget "X" '((0 . "LINE") (8 . "_TB"))))
  4. (repeat (setq i (sslength ss))
  5. (vla-getboundingbox (vlax-ename->vla-object (ssname ss (setq i (1- i)))) 'll 'ur)
  6. (setq l1 (cons (vlax-safearray->list ll) l1)
  7. l2 (cons (vlax-safearray->list ur) l2)
  8. )
  9. )
  10. (setq bb (mapcar '(lambda (a b) (apply 'mapcar (cons a b))) '(min max) (list l1 l2)))
  11. (setvar "LIMMIN" (list (car (car bb)) (cadr (car bb)) ))
  12. (setvar "LIMMAX" (list (car (cadr bb)) (cadr (cadr bb)) ))
  13. (princ)
  14. )
  15. (vl-load-com)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:49:26 | 显示全部楼层
嗨,luctifo,
 
请阅读适用于我网站上所有代码的使用条款,并在使用我的代码的地方保留我的代码标题。
 
对于您的程序,只需按如下方式调用我的函数:
 
  1. (defun c:tblimits ( / box sel )
  2.    (if (setq sel (ssget "_X" '((0 . "LINE") (8 . "_TB"))))
  3.        (progn
  4.            (setq box (LM:SSBoundingBox sel))
  5.            (setvar 'limmin (mapcar '+ (car  box) '(0 0)))
  6.            (setvar 'limmax (mapcar '+ (cadr box) '(0 0)))
  7.        )
  8.    )
  9.    (princ)
  10. )
  11. (vl-load-com) (princ)
  12. ;;--------------=={ SelectionSet BoundingBox }==--------------;;
  13. ;;                                                            ;;
  14. ;;  Returns the lower-left and upper-right points of a        ;;
  15. ;;  rectangle bounding all objects in a supplied SelectionSet ;;
  16. ;;------------------------------------------------------------;;
  17. ;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
  18. ;;------------------------------------------------------------;;
  19. ;;  Arguments:                                                ;;
  20. ;;  ss - SelectionSet for which to return the BoundingBox     ;;
  21. ;;------------------------------------------------------------;;
  22. ;;  Returns:  Point List decribing BoundingBox (in WCS)       ;;
  23. ;;------------------------------------------------------------;;
  24. (defun LM:SSBoundingBox ( ss / i l1 l2 ll ur )
  25.    (repeat (setq i (sslength ss))
  26.        (vla-getboundingbox (vlax-ename->vla-object (ssname ss (setq i (1- i)))) 'll 'ur)
  27.        (setq l1 (cons (vlax-safearray->list ll) l1)
  28.              l2 (cons (vlax-safearray->list ur) l2)
  29.        )
  30.    )
  31.    (mapcar '(lambda ( a b ) (apply 'mapcar (cons a b))) '(min max) (list l1 l2))
  32. )
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 04:58 , Processed in 0.953671 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表