找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 704|回复: 5

[分享]:[源码]region转pl 和 线转pl的程序

[复制链接]
发表于 2004-9-23 19:49:45 | 显示全部楼层 |阅读模式

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

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

×

  1. ;;;Written by WKAI @ XDCAD.NET________________
  2. ;;;___________________________________________
  3. (DEFUN c:region_to_pl (/ region_ent)
  4. (PRINC "\n选择需要转换为PL的REGION:")
  5. (SETVAR "cmdecho" 0)
  6. (SETQ region_ent (SSGET '((0 . "REGION"))))
  7. (IF region_ent
  8.   (PROGN
  9.    (COMMAND "._explode" region_ent)
  10.    (COMMAND)
  11.    (l_to_pl (SSGET "p"))
  12.   )
  13. )
  14. )
  15. (DEFUN l_to_pl (ssa / ss1 lines ent n)
  16. (COMMAND "._undo" "be")
  17. (SETQ ss1 (SSADD))
  18. (REPEAT (SETQ n (SSLENGTH ssa))
  19.   (SETQ ent (SSNAME ssa (SETQ n (1- n))))
  20.   (IF (AND (ENTGET ent)
  21.            (MEMBER (CDR (ASSOC 0 (ENTGET ent)))
  22.                    '("LINE" "ARC" "POLYLINE" "LWPOLYLINE")
  23.            )
  24.       )
  25.    (SETQ ss1 (SSADD ent ss1))
  26.   )
  27. )
  28. (SETQ lines ss1)
  29. (l_to_pl:main)
  30. (COMMAND "._undo" "e")
  31. )
  32. (DEFUN l_to_pl:main (/ ent ss1 n)
  33. (SETQ ent (SSNAME lines 0))
  34. (IF (MEMBER (CDR (ASSOC 0 (ENTGET ent)))
  35.              '("POLYLINE" "LWPOLYLINE")
  36.      )
  37.   (IF (/= 1 (LOGAND (CDR (ASSOC 70 (ENTGET ent))) 1))
  38.    (COMMAND "._pedit" ent "j" lines "" "")
  39.   )
  40.   (COMMAND "._pedit" ent "y" "j" lines "" "")
  41. )
  42. (SETQ lines (SSDEL ent lines))
  43. (SETQ ss1 (SSADD))
  44. (REPEAT (SETQ n (SSLENGTH lines))
  45.   (SETQ ent (SSNAME lines (SETQ n (1- n))))
  46.   (IF (ENTGET ent)
  47.    (SETQ ss1 (SSADD ent ss1))
  48.   )
  49. )
  50. (SETQ lines ss1)
  51. (WHILE (> (SSLENGTH lines) 0) (l_to_pl:main))
  52. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-9-23 20:09:04 | 显示全部楼层
REGION炸开后除了可能有spline外应该都是简单实体吧?
直接用(COMMAND "._pedit" "m" (ssget "p") "" "y" "j" 1 "" "") 就行了.如果有sp,那还要有sp2pl的步骤.
不考虑炸开后含sp的情况,这样就够用了

  1. (DEFUN c:r2p (/ reg ss1 ss2)
  2. (PRINC "\n选择需要转换为PL的REGION:")
  3. (SETVAR "cmdecho" 0)
  4. (setvar "qaflags" 1)
  5. (SETQ reg (SSGET '((0 . "REGION"))))
  6. (IF reg
  7.   (PROGN
  8.    (COMMAND "._explode" reg "")
  9.    (setq ss1 (ssget "P"))
  10.    (if (setq ss2 (ssget "p" '((0 . "REGION"))))
  11.      (progn (command "._explode" ss2 "")
  12.             (setq ss2 (ssget "P"))
  13.      )
  14.    )             
  15.    (COMMAND "._pedit" "m" ss1)
  16.    (if ss2 (command ss2))
  17.    (command "" "y" "j" "" "")
  18.   )
  19. )
  20. )

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2004-9-25 10:13:09 | 显示全部楼层
一楼,和二楼的代码,我到底应该下载哪一个呀?
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 13:39 , Processed in 0.187750 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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