明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1321|回复: 3

[源码] 消隐、遮罩 基础程序

  [复制链接]
发表于 2021-12-22 22:04:37 | 显示全部楼层 |阅读模式
  1. (defun c:tt (/ s1 i a1 txt pt1 txtbox x y pt2 pt3);高程点消隐
  2.   (princ "\n请选择高程点:")
  3.   (setq s1 (ssget  '((0 . "INSERT")(2 . "gc200"))))
  4.   (if s1
  5.     (progn
  6.       (setq i -1)
  7.       (repeat(sslength s1)
  8.         (setq a1 (ssname s1 (setq i(1+ i))))
  9.         (setq txt (entnext a1))
  10.         (setq txt (entget txt))
  11.         (if (= (cdr (assoc 0 txt)) "ATTRIB")
  12.           (progn
  13.             (setq pt1 (cdr (assoc 10 txt)))
  14.             (setq pt1 (list (car pt1) (cadr pt1)))
  15.             (setq txtbox (textbox txt))
  16.             (setq txtbox (cdr txtbox))
  17.             (setq txtbox (car txtbox))
  18.             (setq x (car txtbox))
  19.             (setq y (cadr txtbox))
  20.             (setq pt1 (polar pt1 (* 1.25 pi) 0.1414))
  21.             (setq pt2 (polar pt1 0.0 (+ x 0.2)))
  22.             (setq pt3 (polar pt2 (* 0.5 pi) (+ y 0.2)))
  23.             (setq pt4 (polar pt1 (* 0.5 pi) (+ y 0.2)))
  24.             (command "_wipeout" "f" "off")
  25.             (command "wipeout" pt1 pt2 pt3 pt4 "c")
  26.             (command "draworder" s1 "" "f")
  27.           )
  28.           (print "你选择的高程点没有属性!")
  29.         )
  30.       )
  31.     )
  32.   )
  33.   (prin1)
  34. )

  35. ;==============================================================
  36. (defun c:tt1 (/ s1 i a1 txt pt1 txtbox x y pt2 pt3);文字消隐
  37.   (princ "\n请选择文字:")
  38.   (if(setq s1 (ssget  '((0 . "text"))))
  39.     (progn
  40.       (setq i -1)
  41.       (repeat(sslength s1)
  42.         (setq e(ssname s1(setq i(1+ i))))
  43.         (setq txt (entget e))
  44.         (setq pt1 (cdr (assoc 10 txt)))
  45.         (setq pt1 (list (car pt1) (cadr pt1)))
  46.         (setq txtbox (textbox txt))
  47.         (setq txtbox (cdr txtbox))
  48.         (setq txtbox (car txtbox))
  49.         (setq x (car txtbox))
  50.         (setq y (cadr txtbox))
  51.         (setq pt1 (polar pt1 (* 1.25 pi) 0.1414))
  52.         (setq pt2 (polar pt1 0.0 (+ x 0.2)))
  53.         (setq pt3 (polar pt2 (* 0.5 pi) (+ y 0.2)))
  54.         (setq pt4 (polar pt1 (* 0.5 pi) (+ y 0.2)))
  55.         (command "_wipeout" "f" "off")
  56.         (command "wipeout" pt1 pt2 pt3 pt4 "c")
  57.         (command "draworder" s1 "" "f")
  58.       )
  59.     )
  60.   )
  61.   (prin1)
  62. )

  63. ;==============================================================块消隐
  64. (defun c:tt2 (/ s1 i e pt1 pt2 pt3 pt4)
  65.   (princ "\n请选择图块:")
  66.   (if(setq s1(ssget  '((0 . "INSERT")(8 . "dldw"))))
  67.     (progn
  68.       (setq i -1)
  69.       (repeat(sslength s1)
  70.         (Setq e(ssname s1(setq i(1+ i))))
  71.         (vla-getboundingbox (vlax-ename->vla-object e) 'pt1 'pt2)
  72.         (setq
  73.           pt1(vlax-safearray->list pt1)
  74.           pt2 (vlax-safearray->list pt2)
  75.         )
  76.         (setq pt1(list(car pt1)(cadr pt1)))
  77.         (setq pt2(list(car pt2)(cadr pt2)))
  78.         (setq pt3(list(car pt1)(cadr pt2)))
  79.         (setq pt4(list(car pt2)(cadr pt1)))
  80.         (if(< 1(sslength(ssget "_CP" (list pt1 pt3 pt2 pt4))))
  81.           (progn
  82.             (command "_wipeout" "f" "off")
  83.             (command "wipeout" "_non" pt1"_non" pt3 "_non" pt2 "_non" pt4 "c")
  84.             (command "draworder" s1 "" "f")
  85.           )
  86.         )
  87.       )
  88.     )
  89.   )
  90.   (prin1)
  91. )

  92. ;===================================================================综合消隐
  93. (defun c:tt4 (/ s1 i e pt1 pt2 pt3 pt4)
  94.   (princ "\n请选择图块:")
  95.   (if(setq s1(ssget '((0 . "~*line"))))
  96.     (progn
  97.       (setq i -1)
  98.       (repeat(sslength s1)
  99.         (Setq e(ssname s1(setq i(1+ i))))
  100.         (vla-getboundingbox (vlax-ename->vla-object e) 'pt1 'pt2)
  101.         (setq
  102.           pt1(vlax-safearray->list pt1)
  103.           pt2 (vlax-safearray->list pt2)
  104.         )
  105.         (setq pt1(list(-(car pt1)0.3)(-(cadr pt1)0.3)))
  106.         (setq pt2(list(+(car pt2)0.3)(+(cadr pt2)0.3)))
  107.         (setq pt3(list(car pt1)(cadr pt2)))
  108.         (setq pt4(list(car pt2)(cadr pt1)))
  109.         (if(< 1(sslength(ssget "_CP" (list pt1 pt3 pt2 pt4))))
  110.           (progn
  111.             (command "_wipeout" "f" "off")
  112.             (command "wipeout" "_non" pt1"_non" pt3 "_non" pt2 "_non" pt4 "c")
  113.             (command "draworder" E "" "f")
  114.           )
  115.         )
  116.       )
  117.     )
  118.   )
  119.   (prin1)
  120. )




评分

参与人数 2明经币 +2 收起 理由
yanshengjiang + 1
bssurvey + 1 赞一个!

查看全部评分

发表于 2021-12-23 08:57:04 | 显示全部楼层
谢谢楼主分享!!!
发表于 2021-12-28 21:44:21 | 显示全部楼层
谢谢楼主分享!!!
发表于 昨天 07:15 | 显示全部楼层
楼主,有动图么?我加载后 ,没反应啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 10:30 , Processed in 0.176442 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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