找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3391|回复: 21

[原创]:※※※扩展修剪程序※※※

[复制链接]
发表于 2004-6-5 16:26:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
用ET扩展的函数做了个批量扩展修剪的工具:
[php]
;;;|增强扩展修剪工具
;;;|程序运行前请检查是否安装ET扩展工具
;;;|制作:snsj 2004.6.5
(defun c:ttr (/ ss ob blpt pt doc mspace vb kew ptt ppt minpt)
(princ "******|增强修剪程序(用于2000+版本),制作:snsj,欢迎你光临小东CAD!!!(如程序异常,请安装ET扩展)|******")
(vl-load-com)(load "extrim.lsp")
(vla-startundomark(setq doc(vla-get-activedocument(vlax-get-acad-object))))
  (setq mspace(vla-get-modelspace doc)
        vb(vlax-make-safearray vlax-vbObject '(0 . 0))
        )
(if(ssget '((0 . "ellipse,circle,lwpolyline")))
  (progn
    (initget "A")
    (setq kew (getkword"\n外部修剪<A>/内部修剪<回车>:"))
  (vlax-for ob(vla-get-activeselectionset doc)
    (if(vlax-curve-isClosed ob)
      (progn
     (vla-getboundingbox ob 'minpt nil)
     (setq ptt(vlax-safearray->list minpt))
     (setq ppt(list(-(car ptt)100)(-(cadr ptt)100)))
      (if(=(vla-get-ObjectName ob)"AcDbPolyline")
        (progn
          (vlax-safearray-put-element vb 0 ob)
          (setq pt(vlax-get(car(vlax-safearray->list
                   (vlax-variant-value(vla-addregion mspace vb))))
                     "centroid"))
                            )
        (setq pt(vlax-get  ob "center"))
                        )       
      (if(null kew)(etrim(vlax-vla-object->ename ob)pt)
        (etrim(vlax-vla-object->ename ob)ppt))
      )))
)(princ"\n******|选择对象为空|******")
  )(vla-endundomark doc)(setvar "highlight" 1)(princ)
  )
      [/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2004-6-5 16:28:30 | 显示全部楼层

Re: [原创]:※※※扩展修剪程序※※※

最初由 snsj 发布
[B]用ET扩展的函数做了个批量扩展修剪的工具:
[php]
;;;|增强扩展修剪工具
;;;|程序运行前请检查是否安装ET扩展工具
;;;|制作:snsj 2004.6.5
(defun c:ttr (/ ss ob blpt pt doc mspace vb kew ptt ppt minpt)
(p... [/B]

效果演示:

[swf w=512 h=482]http://www.xdcad.net/bbstech/snsj/snsj-ttr.swf[/swf]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-5 17:43:52 | 显示全部楼层

Re: Re: [原创]:※※※扩展修剪程序※※※

支持封闭和不封闭物体的:
[php]
;;;|增强扩展修剪工具
;;;|程序运行前请检查是否安装ET扩展工具
;;;|制作:snsj 2004.6.5
(defun c:ttr (/ ss ob blpt pt doc mspace vb kew ptt ppt minpt kw)
(princ "******|增强修剪程序(用于2000+版本),制作:snsj,欢迎你光临小东CAD!!!(如程序异常,请安装ET扩展)|******")
(vl-load-com)(load "extrim.lsp")
(vla-startundomark(setq doc(vla-get-activedocument(vlax-get-acad-object))))
  (setq mspace(vla-get-modelspace doc)
        vb(vlax-make-safearray vlax-vbObject '(0 . 0))
        )
      (initget "A")
    (setq kw (getkword"\n处理封闭图形<A>/处理不封闭图形<回车>:"))
  (cond((null kw)
(if(ssget '((0 . "ellipse,arc,lwpolyline,line")))
  (progn
    (setq pt(getpoint "\n点取修剪方向:"))
    (vlax-for ob(vla-get-activeselectionset doc)
      (if(not(vlax-curve-isClosed ob))
         (etrim(vlax-vla-object->ename ob)pt)
      ))
    )
  )
        )
(t       
(if(ssget '((0 . "ellipse,circle,lwpolyline")))
  (progn
    (initget "A")
    (setq kew (getkword"\n外部修剪<A>/内部修剪<回车>:"))
  (vlax-for ob(vla-get-activeselectionset doc)
    (if(vlax-curve-isClosed ob)
      (progn
     (vla-getboundingbox ob 'minpt nil)
     (setq ptt(vlax-safearray->list minpt))
     (setq ppt(list(-(car ptt)100)(-(cadr ptt)100)))
      (if(=(vla-get-ObjectName ob)"AcDbPolyline")
        (progn
          (vlax-safearray-put-element vb 0 ob)
          (setq pt(vlax-get(car(vlax-safearray->list
                   (vlax-variant-value(vla-addregion mspace vb))))
                     "centroid"))
                            )
        (setq pt(vlax-get  ob "center"))
                        )       
      (if(null kew)(etrim(vlax-vla-object->ename ob)pt)
        (etrim(vlax-vla-object->ename ob)ppt))
      )))
)(princ"\n******|选择对象为空|******")
  ))
       )
(vla-endundomark doc)(setvar "highlight" 1)(princ)
  )
      [/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-5 17:52:34 | 显示全部楼层
谢谢SNSJ !我正苦于找不到这个功能呢,尤其是后面改过的更棒!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-5 17:53:17 | 显示全部楼层
我画了一个圆和一个矩形,一条直线穿过这两个实体,
然后用TTR

提示:
无效点,多边形线段长度为零。
; 错误: *error* 函数中出错AutoCAD 变量设置被拒绝: "orthomode" nil
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-5 18:01:29 | 显示全部楼层
不会吧,这个是依次处理的,装ET扩展工具了么?需要有ET支持的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-6 14:03:16 | 显示全部楼层
我安装了ET工具呀。
那个提示错误的变量是不是坐标转换的变量?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2004-6-6 19:15:46 | 显示全部楼层
你是不是运行着我的坐标标注程序?
呵呵,错误处理函数中没有判断变量orthomode_old的语句,所以当程序在orthomode_old变量赋值之前出错的话,CAD将跳至这个出错处理程序,而此时执行(setvar "orthomode" orthomode_old) 是肯定会出错的。所以这里再出错,它就无法显示出错信息且无法正常退出程序啦。





  1. ;;--------------------------------

  2.   (defun err_new (msg)
  3.     (setvar "orthomode" orthomode_old)
  4.     (princ msg)
  5.     (setclose_zb)
  6.   ) ;_ 结束defun

去坐标标注帖子看看
http://www.xdcad.net/forum/showthread.php?s=&threadid=193061
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-6 20:56:34 | 显示全部楼层
请问下面这个是怎么回事呀
命令:
TTR
******|增强修剪程序(用于2000+版本),制作:snsj,欢迎你光临小东CAD!!!(如程序异常,
请安装ET扩展)|******
处理封闭图形<A>/处理不封闭图形<回车>:
选择对象: 找到 1 个
选择对象: 找到 1 个,总计 2 个
选择对象:
点取修剪方向:
错误: Automation 错误。 调用方法 Clear (接口 IAcadSelectionSet) 失败
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-6 21:09:08 | 显示全部楼层
好东西,下载了!
明天帮你测试一下!
测试的重点是第二个,要是好的话,那就是我们这些菜鸟的福气!
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-6-6 21:28:53 | 显示全部楼层
最初由 yjtdkj 发布
[B]请问下面这个是怎么回事呀
命令:
TTR
******|增强修剪程序(用于2000+版本),制作:snsj,欢迎你光临小东CAD!!!(如程序异常,
请安装ET扩展)|******
处理封闭图形<A>/处理不封闭图形<回车>:
选择对象: 找到 1 个... [/B]

调用 ActiveSelectionSet 的程序经常出现的毛病,程序开始前先清理"CURRENT"就可以避免。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-6-6 23:18:15 | 显示全部楼层
对于任意形状的polyline ,"centroid"来判断内外显然是不行的.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-6 23:29:03 | 显示全部楼层
恩,这个只针对大部分的情况,对形心在外部的情况可能出现相反,个别问题个别解决吧:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-7 13:21:57 | 显示全部楼层
最初由 snsj 发布
[B]恩,这个只针对大部分的情况,对形心在外部的情况可能出现相反,个别问题个别解决吧:) [/B]

建议对于任意形状的polyline,先通过由它们的点来求面积确定其点表的走向顺序,是顺时针还是逆时针方向;然后只要根据任意连续的两点就能给内外点了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-7 15:26:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
最初由 eachy 发布
[B]
[处理封闭图形<A>/处理?.. [/B]

先谢谢斑竹了,不但我是个新手,能否告诉我具体怎么操作?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 05:35 , Processed in 0.536845 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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