找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 126|回复: 0

[源码] 炸開圖塊修改,然後再依原圖塊存檔的小程序

[复制链接]

主题

0

回帖

0

积分

管理员

积分
0
发表于 2024-7-19 10:24:38 | 显示全部楼层 |阅读模式
  1. (defun C:xb1 (/ ss bss en1 EN1_data)
  2.   (if (= xb_name nil)
  3.     (progn
  4.       (command "ucs" "w")
  5.       (setq bss (entsel))
  6.       (command "_.undo" "_group")
  7.       (setq eN1 (car bss))
  8.       (setq EN1_data (entget EN1))
  9.       (setq xb_name (cdr (assoc 2 EN1_data))) ;名稱
  10.       (setq xb_pt (cdr (assoc 10 EN1_data)))
  11.       ;;插入點
  12.       (setq ttx (polar xb_pt 0 100))
  13.       (setq tty (polar xb_pt (/ pi 2) 100))
  14.       (SETQ mir_41 (assoc 41 EN1_data))
  15.       (SETQ mir_42 (assoc 42 EN1_data))
  16.       
  17.       (setq xb_layer (cdr (assoc 8 EN1_data)))
  18.       ;;圖層
  19.       (setq xb_rot (cdr (assoc 50 EN1_data)))
  20.       ;;旋轉
  21.       (setq xb_dg1 (* (/ xb_rot pi) 180))
  22.       (setq xb_sc (cdr (assoc 41 EN1_data)))
  23.       ;;以下為X向鏡射
  24.       (if (< (cdr (assoc 41 EN1_data)) 0)
  25.   (progn
  26.     (setq mi_x "1")
  27.   )
  28.       )
  29.       ;;以下為y向鏡射
  30.       (if (< (cdr (assoc 42 EN1_data)) 0)
  31.   (progn
  32.     (setq mi_y "1")
  33.   )
  34.       )
  35.       ;;;將xb_sc轉為正數
  36.       (if (= mi_x "1")
  37.   (setq xb_sc (abs xb_sc))
  38.       )
  39.       ;;比例
  40.       (setq sc_re (/ 1 xb_sc))
  41.       ;;有旋轉及縮放的處理差異
  42.       (if (and (= xb_rot 0) (= xb_sc 1))
  43.   (progn
  44.     (COMMAND "EXPLODE" bss "")
  45.     (setq ss (ssget "_p"))
  46.     (SETVAR "QAFLAGS" 1)
  47.     (COMMAND "GROUP" SS "")
  48.     (SETQ ENLAST1 (ENTLAST))
  49.     (SETVAR "QAFLAGS" 0)
  50.     (command "pickstyle" "0")
  51.     (command "ucs" "p")
  52.   )
  53.   (progn
  54.     (COMMAND "EXPLODE" bss "")
  55.     (setq ss (ssget "_p"))
  56.     (SETVAR "QAFLAGS" 1)
  57.     (COMMAND "GROUP" SS "")
  58.     (SETQ ENLAST1 (ENTLAST))
  59.     (SETVAR "QAFLAGS" 0)
  60.     (command "pickstyle" "0")
  61.     (command "ucs" "p")
  62.   )
  63.       )
  64.     )
  65.     (princ "前次編輯未結束")
  66.   )
  67.   (command "_.undo" "_end")
  68. )
  69. (defun C:cb1 (/ HOLDECHO HOLDBLIP A AA BLKREF pt)
  70.   (setvar "CMDECHO" 0)
  71.   (command "ucs" "w")
  72.   (setq olayer (getvar "clayer"))
  73.   (setvar "clayer" xb_layer)
  74.   (command "pickstyle" "1")
  75.   (redraw ENLAST1 3)
  76.   (setq AA (ssget))
  77.   (command "_.undo" "_group")
  78.   (setq HOLDECHO (getvar "cmdecho"))
  79.   (setq HOLDBLIP (getvar "blipmode"))
  80.   (setq HOLDOSMODE (getvar "OSMODE"))
  81.   (setvar "cmdecho" 0)
  82.   (setvar "blipmode" 0)
  83.   (setvar "OSMODE" 0)
  84.   (setq A (rtos (* (getvar "CDATE") 1E8)))
  85.   (command "scale" aa "" xb_pt sc_re)
  86.   ;;縮回1
  87.   (command "rotate" aa "" xb_pt (- 0 xb_dg1))
  88.   ;;轉回0
  89.   (if (= mi_x "1")
  90.     (command "mirror" aa "" xb_pt tty "y"))
  91.   (if (= mi_y "1")
  92.     (command "mirror" aa "" xb_pt ttx "y"))
  93.   ;;鏡射回去
  94.   (if (/= AA NIL)
  95.     (progn
  96.       (command "-BLOCK" xb_name "y" xb_pt AA "")
  97.       (command "-INSERT" xb_name xb_pt "" "" "" "" "")
  98.       (SETQ ENLAST1 (ENTLAST))
  99.       (setq enL1_data (entget ENLAST1))
  100.       (command "scale" ENLAST1 "" xb_pt xb_sc)
  101.     (setq oldr (assoc 41 enL1_data))
  102.     (setq enL1_data (subst mir_41 oldr enL1_data))
  103.     (entmod enL1_data)
  104.     (setq oldr (assoc 42 enL1_data))
  105.     (setq enL1_data (subst mir_42 oldr enL1_data))
  106.     (entmod enL1_data)
  107.       (command "rotate" ENLAST1 "" xb_pt xb_dg1)
  108.       (command "attsync" "" ENLAST1 "")
  109.       ;;放置最下方
  110.       (command "draworder" ENLAST1 "" "b")
  111.       (command "hatchtoback")
  112.     )
  113.   )
  114.   (if (/= AA NIL)
  115.     (setq xb_name nil)
  116.   )
  117.   (setvar "blipmode" HOLDBLIP)
  118.   (setvar "cmdecho" HOLDECHO)
  119.   (setvar "OSMODE" HOLDOSMODE)
  120.   (setvar "clayer" olayer)
  121.   (command "_.undo" "_end")
  122.   (command "ucs" "p")
  123.   (setq mi_x "0" mi_y "0")
  124.   (princ)
  125. )
  126. (defun C:xx1 ()
  127.   (setq xb_name nil)
  128.   (princ "Xb1指令重置")
  129. )
复制代码

 

 

 

 

[源码] 炸開圖塊修改,然後再依原圖塊存檔的小程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2025-2-5 16:50 , Processed in 0.072411 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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