找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 787|回复: 7

[求助] [求助]:填充分解与合并的疑问(广征思路)

[复制链接]
发表于 2004-11-21 09:45:32 | 显示全部楼层 |阅读模式

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

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

×
最近经常要合并或者分解填充物体(小生不会LSP,以前要用时都是根据高手哥哥的LSP改编的,现在遇到些困难,请各位给予帮助,谢谢!)
请问如何才能根据“现有填充”和“已知的线”(我在图上画的是BO线,但有时只知道分割线的位置,能否不生成BO自动分解填充?),设计个LSP,自动将填充按需分解?附图如下(第一次贴图,我这显示正常,如显示不正常,我会再贴)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-11-21 10:36:35 | 显示全部楼层
不用特意形成封闭域,但必须有明确的边界(暂不能有spline线)。
如果有特定要求,可以用divide等命令先作处理后再填充。

试试这个,加载qytc.lsp,运行qytc:(5)
仅以图案line、比例100、角度45为例,修改后功能:
方式1:选一个填充一个--命令:qytc1
方式2:先选择最后填充,形成整体--命令:qytc2
程序原码:
[php]
;|
qytc.lsp 区域填充
* C:qytc
-- xyp@bsedi.com
2004.11.21
|;
(prompt "\n\r      加载区域填充程序。")
;;;-------------------------------------------
;;;主程序
;;;方式1:选一个填充一个
(defun c:qytc1 (/ pt ss1 ss2 en)
  (cmdla0)
  (while (setq pt (getpoint "\n选取封闭域内一点: "))
    (setq ss1 (ssget "X"))
    (command "bpoly" pt "")
    (setq ss2 (ssget "X"))
    (setq en (ssdiff ss2 ss1))
;;;定义填充图案、比例、角度
    (if        (/= en nil)
      (command "_hatch" "line" "100" "45" en "")
    )
    (command "erase" en "")
  )
  (cmdla1)
)

;;;方式2:先选择最后填充,形成整体
(defun c:qytc2 ()
  (cmdla0)
  (setq ss1 (ssget "X"))
  (while (setq pt (getpoint "\n选取封闭域内一点: "))
    (command "bpoly" pt "")
  )
  (setq ss2 (ssget "X"))
  (setq en (ssdiff ss2 ss1))

  (if (/= en nil)
    (command "_hatch" "line" "100" "45" en "")
  )
  (command "erase" en "")
  (cmdla1)
)

;;;-------------------------------------------
;;;子程序
;;;
(defun CMDLA0 ()
  (setq cmdech (getvar "CMDECHO"))
  (setq oom (getvar "orthomode"))
  (setq osm (getvar "osmode"))
  (SETQ LA (getvar "clayer"))
  (setq rmode (getvar "regenmode"))
  (setvar "regenmode" 0)
  (setvar "CMDECHO" 0)
  (princ)
)
(defun CMDLA1 ()
  (setvar "CMDECHO" cmdech)
  (setvar "orthomode" oom)
  (setvar "osmode" osm)
  (setvar "clayer" LA)
  (setvar "regenmode" rmode)
  (princ)
)
(defun ssdiff (ss1 ss2 / hilite ss3)
  (setq hilite (getvar "highlight"))
  (setvar "highlight" 0)
  (command "_.select" ss1 "_r" ss2 "")
  (setq ss3 (ssget "p"))
  (setvar "highlight" hilite)
  ss3
)
(DEFUN Pxyp (TXT1)
  (SETQ TXT1 (STRCAT "\n\r程序命令: " TXT1 "-- xyp@bsedi.com"))
  (PRINC TXT1)
  (Princ)
)
(pxyp "qytc1、qytc2  (区域填充)")
(princ)
;;;-------------------------------------------
;;;END
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-21 10:47:24 | 显示全部楼层
程序操作示意:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-21 12:04:57 | 显示全部楼层
谢谢xyp1964哥哥,我试了一下
qytc程序有问题,多个连续BO线相交部分,无法全部填充(只填充前几个,后面的不行----如四个连续BO线,填充时前2个及其相交部分无问题,第三个开始就出错),此外填充类型不能选择
此外,4个填充如何重新合并成1个呢?
---我手头有N(N大于百万)个填充需要合并,能否直接合并而无边界线辅助?---
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-21 14:20:14 | 显示全部楼层
最初由 xxxyzxx 发布
[B]谢谢xyp1964哥哥,我试了一下
qytc程序有问题,多个连续BO线相交部分,无法全部填充(只填充前几个,后面的不行----如四个连续BO线,填充时前2个及其相交部分无问题,第三个开始就出错),此外填充类型不能选择... [/B]

填充的问题已解决,见2楼修改程序。
填充合并的问题,还未能解决,不过论坛中好像有相关的帖子。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-11-21 15:42:32 | 显示全部楼层
最初由 xxxyzxx 发布
[B]谢谢xyp1964哥哥,我试了一下
qytc程序有问题,多个连续BO线相交部分,无法全部填充(只填充前几个,后面的不行----如四个连续BO线,填充时前2个及其相交部分无问题,第三个开始就出错),此外填充类型不能选择... [/B]


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

使用道具 举报

 楼主| 发表于 2004-11-22 08:56:30 | 显示全部楼层

自己做了些改动,有些疑问!

谢谢、谢谢了,老大的改动不错,CAD已经修复~
;;;定义填充图案、比例、角度(改为实体填充了)
    (if    (/= en nil)
      (command "_hatch" "solid" en "")
    )
    (command "erase" en "")
疑问:原LINE填充时有比例和角度,SOLID中没有这个选项,我给删了,试了一下好使,如不删改为
   (command "_hatch" "solid" " " " " en "") 出现了奇怪的现象(也挺满意的---能生成BO边界了,并可以选择---但对于连续填充来说不方便了)
---刚才去找生成物体的那个指令了,可惜对LSP一窍不通的我目前不知道如何才能在填充的同时生成BO线---

最大的问题如6楼楼主所述,目的没有达到,555~~~
帖子内容应该更新为:
目的1.
现有填充A、B......(其中A、B等填充中有重复)
欲求填充A+B、.......等合集(大块填充)---可在1层生成
及A-B、B-A、A交B(每小块填充)---可在2层生成
必须要在2个层(层名随意0生成,用于不同的目的)
------其实老大的LSP对于有边界的图来说,能够满足要求,但我手头比较麻烦,近千张的图纸,每张图纸近百万个图形(似乎没有一张是有全部边界的,大多数只有填充,最好能直接对填充作处理,如必须要生成边界的话!天啊~~~)------LZX的未注册版已经不能满足重新生成边界的需求,原先图大时可以分层导出再分区域导出,而现在(每张图都有近百个图层),唉,欲哭无泪,趁这个时机,我觉得学点LSP可能更实惠~~~
目的2.
现有环状填充M,由于内边界线重复计算的问题,需将其分解为2块(任意大小的两块,只要不再有内边界即可---因为是流水线作业,计算面积时会出错,必须分解处理好〔虽然有很多好的程序计算时会自动减去内边界面积,但图交到别人手中就会......〕)
困难1.
CAD卡掉的原因
朋友给的ARX程序,只能在14版本加载,由于附带屏幕菜单,不清楚什么原因,加载完毕后,所有CAD中快捷命令实效,删除所有版本的CAD后重新安装仍不能解决问题,555~~~(该如何处理?)
目的3.
能否将ARX、VLK等类型文件改为LSP文件,这样能看到内容,并且能根据自我需要修改方便
困难2.
晓东工具箱的填充重新生成边界的原理是什么,029版中有的填充不能生成边界;而LZX规划系统中的命令却能正常生成,两者的原理有何不同?(希望老大们能使用些LSP语言之类的辅助手段,理解得细些---与盗版目的不同---希望作者们能谅解)
困难2+.
LZX规划系统中无填充合并功能,而晓东工具箱的填充合并命令不能达到我的目的,不知原理是什么,合并出来的填充有很多问题
-----一下贴了这么多,希望老大们能谅解,解决方法可以一点点贴出来,我会经常来的-----
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-22 19:19:11 | 显示全部楼层
都是高手啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-4 04:40 , Processed in 0.454117 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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