明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 革天明

全部的币都拿出来了!求实现自动TRIM功能!

  [复制链接]
发表于 2012-4-27 22:59:44 | 显示全部楼层
本帖最后由 langjs 于 2012-4-27 23:07 编辑

我这边CAD2008运行效果是这样的,你用哪个版本的CAD?不同版本的CAD有些不同


本帖子中包含更多资源

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

x

点评

2006 机械版已安装ET工具,会出现将原有线剪掉一部分的现象  发表于 2012-4-28 11:28
回复

使用道具 举报

发表于 2012-4-27 23:08:11 | 显示全部楼层
思路不错
回复

使用道具 举报

发表于 2012-4-28 07:39:05 | 显示全部楼层
帮顶下,期待解决
回复

使用道具 举报

发表于 2012-4-28 08:00:46 来自手机 | 显示全部楼层
院长很那个那个…发内裤码…这个还只发张图片……

点评

只表示此功能肯定能实现,再看看大家的想法,虽然功能不具有通用性,但早晚还是会公布“伪”源码的……  发表于 2012-4-28 11:37
回复

使用道具 举报

发表于 2012-4-28 08:04:20 | 显示全部楼层
flytoday 发表于 2012-4-28 08:00
院长很那个那个…发内裤码…这个还只发张图片……

习惯了就好。。。
回复

使用道具 举报

 楼主| 发表于 2012-4-28 09:07:56 | 显示全部楼层
大家继续努力啊!现在能实现一次TRIM一个分界槽了,英雄们!将这个挑战踩在脚下吧!

点评

你用的哪个版本的CAD?  发表于 2012-4-28 09:14
回复

使用道具 举报

发表于 2012-4-28 09:10:09 | 显示全部楼层
;;; eePl 閉合的PEID形成的多段線
;;; xxset 紅線由左至右 之 x 值

(defun fj (eePl xxset)
   
   (vla-getboundingbox (vlax-ename->vla-object eePl) 'minpt 'maxpt)
   (setq ;; pts (acet-ent-geomextents eePl)
         pts (list (vlax-safearray->list minpt) (vlax-safearray->list maxpt))
          p1 (car pts)
          p3 (cadr pts)
          x0 (car p1)
          x9 (car p3)
          y5 (+ (cadr p1)  2)
          pa (list (+ x0 1) y5)
        nxtx (cdr xxset)
   )
   (setq ss1 (ssget "w" p1 p3))
   (command "boundary" pa)
     (while (setq pbx (car nxtx))
       (setq nxtx (cddr nxtx)
               pb (list (+ pbx 1) y5)
       )
       (command pb)
     )
   (command "")
   (setq ss2 (ssget "w" p1 p3))
   (command "erase" ss1 "")
)
回复

使用道具 举报

 楼主| 发表于 2012-4-28 09:25:35 | 显示全部楼层
革天明 发表于 2012-4-28 09:07
大家继续努力啊!现在能实现一次TRIM一个分界槽了,英雄们!将这个挑战踩在脚下吧!

06机械版,没有装ET工具,但使用vla-getboundingbox来代替了
回复

使用道具 举报

 楼主| 发表于 2012-4-28 09:34:18 | 显示全部楼层
Andyhon 发表于 2012-4-28 09:10
;;; eePl 閉合的PEID形成的多段線
;;; xxset 紅線由左至右 之 x 值

我已安装ET工具,无论是使用acet-ent-geomextents 还是vla-getboundingbox 都只能分割开一个分界槽,错误提示是:
命令: nb

选择对象: 指定对角点: 找到 47 个

选择对象:
选择对象: line 指定第一点:
指定下一点或 [放弃(U)]:
指定下一点或 [放弃(U)]:
命令: line 指定第一点:
指定下一点或 [放弃(U)]:
指定下一点或 [放弃(U)]:
命令: break 选择对象:
指定第一个打断点:
指定第二个打断点:
命令: break 选择对象:
指定第一个打断点:
指定第二个打断点:
命令: break 选择对象:
指定第一个打断点:
指定第二个打断点:
命令: break 选择对象:
指定第一个打断点:
指定第二个打断点:
命令: break 选择对象:
指定第一个打断点:
指定第二个打断点:
命令: break 选择对象:
指定第一个打断点:
指定第二个打断点:
命令: ; 错误: 参数类型错误: consp 2.5

点评

依 Boundary 的思路 , 未动用 Break 呀!?  发表于 2012-4-28 09:43
回复

使用道具 举报

 楼主| 发表于 2012-4-28 10:05:34 | 显示全部楼层
本帖最后由 革天明 于 2012-4-28 10:09 编辑
革天明 发表于 2012-4-28 09:34
我已安装ET工具,无论是使用acet-ent-geomextents 还是vla-getboundingbox 都只能分割开一个分界槽,错误 ...


Boundary 的话只能画出一条分界槽,以前还能画出多个分界槽,下面是程序,主程序很简单,只不过是调用了几个函数而已,程序思路如下:
①将多个线段、圆弧使用PEID合并成多段线
②选择刚生成的多段线,或许可以使用entlast,目前还未使用,先手动选择多段,多段线名字为nb-entsel
③使用函数 get-pline-point得到多段线的顶点列表nb-ptlist
④使用(Gu_xl_3p nb-ptlist 3)将多段线顶点列表生成三个一组的点列表
⑤repeat (length nb-ptlist)次对三个一组的点列表进行判断,符合(equal (distance nb-3p-p1 nb-3p-p2)        (distance nb-3p-p3 nb-3p-p2) (* 0.001 (distance nb-3p-p1 nb-3p-p2)) )此条件的认为是“分界槽",这时在分界槽的两个腰的中点向下画线,
⑥对于符合分界槽条件的位置进行处理,将分界槽打断或分开,多段线中含圆弧,估计依据各点重画会有点困难;目前大家提出的方法有TRIM,BREAK 、Boundary,但始终只能有一个分界槽分开;Boundary只能画出一个分界槽和两条向下的线,却不能将分界槽分开。
下面是样例及LISP:传的有点重复,等此贴完结后我会重新编辑,在二楼将样例及答案发布,其它楼层的附件都将删去,以减少论坛容量

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-19 08:35 , Processed in 0.181199 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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