明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2987|回复: 13

[讨论] 图形最大边界

  [复制链接]
发表于 2011-8-3 22:57:13 | 显示全部楼层 |阅读模式
      各位大虾,请问这个lisp程序该怎么写,用什么函数;


根据左边图形的最大边界线(右图中的小长方形),画一个方形(右图红色),使该红方形与小方形(右图)每边最小距离3mm以上,且保证红方形的每边长度为0.5的N倍(N为整数)。请 各位指教,多谢

本帖子中包含更多资源

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

x
发表于 2011-8-4 08:20:50 | 显示全部楼层
外框线前不久才讨论过....
----------------------------------
每边长度为0.5的N倍

Command: (/ (fix (* (+ 5.01 0.5) 2)) 2.0)
5.5

Command: (/ (fix (* (+ 5.51 0.5) 2)) 2.0)
6.0

Command: (/ (fix (* (+ 5.49 0.5) 2)) 2.0)
5.5

Command: (/ (fix (* (+ 5.99 0.5) 2)) 2.0)
6.0
 楼主| 发表于 2011-8-4 12:20:36 | 显示全部楼层
呵呵,我是新注册的,多谢你的解答
 楼主| 发表于 2011-8-4 12:41:05 | 显示全部楼层
ANDYHON  ,能发个链接吗,找了,但没找到,多谢
发表于 2011-8-8 18:26:35 | 显示全部楼层
学习了,谢谢
发表于 2011-8-8 19:07:20 | 显示全部楼层
楼主怎么搞的,前几天刚有人讨论过这个,你找找看呀,两个星期内的贴子都有的入块画外形程序了
发表于 2011-8-8 19:35:59 | 显示全部楼层
..但没找到...
只是有个印象耳
So,链接您得寻觅哩
发表于 2011-8-8 22:11:05 | 显示全部楼层
以前收集的,可能有用。
;By Longxin 明经通道 2005.06
;;取得实体外矩形框
;;例:(getbox 图元名)
;;返回:((x1 y1 z1)_min (x2 y2 z2)_max)
(defun getbox (e1 / obj minpoint maxpoint)
  (setq obj (vlax-ename->vla-object e1)) ;转换图元名
  (vla-GetBoundingBox obj 'minpoint 'maxpoint)
                                        ;取得包容图元的最大点和最小点
  (setq minpoint (vlax-safearray->list minpoint)) ;把变体数据转化为表
  (setq maxpoint (vlax-safearray->list maxpoint)) ;把变体数据转化为表
  ;;(command "box" minpoint maxpoint 2)
  (setq obj (list minpoint maxpoint))
)
发表于 2012-5-17 17:27:53 | 显示全部楼层
找好久都找不到,就要2D的,不要3D的!选几个线和几个其它的图元,画出个最大外框!哎
发表于 2012-5-17 20:23:32 | 显示全部楼层
支持选择集的,自已扩展一下就可以了
(setq testSS (ssget))
(if testSS
(progn
(vl-load-com)
(setq Obj (vlax-ename->vla-object (ssname testSS 0)))
  (vla-GetBoundingBox obj 'minpoint 'maxpoint)
  (setq minX (car (vlax-safearray->list minpoint)))
  (setq minY (cadr (vlax-safearray->list minpoint)))
  (setq maxX (car (vlax-safearray->list maxpoint)))
  (setq maxY (cadr (vlax-safearray->list maxpoint)))
  (setq index 0)
  (while (< index (sslength testSS))
  (setq Obj (vlax-ename->vla-object (ssname testSS index)))
  (vla-GetBoundingBox obj 'minpoint 'maxpoint)
  (setq #minX (car (vlax-safearray->list minpoint)))
  (setq #minY (cadr (vlax-safearray->list minpoint)))
  (setq #maxX (car (vlax-safearray->list maxpoint)))
  (setq #maxY (cadr (vlax-safearray->list maxpoint)))
  (if (<= #minX minX) (setq minX #minX))
(if (<= #minY minY) (setq minY #minY))
(if (>= #maxX maxX) (setq maxX #maxX))
(if (>= #maxY maxY) (setq maxY #maxY))
    (setq index (1+ index))
    )
       (setq MinPoint (list minX minY))
      (setq MaxPoint (list maxX maxY))
       (vl-cmdf "RECTANG" minPoint MaxPoint)
      )
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-31 00:14 , Processed in 0.182612 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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