天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 50|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    昨天 15:11
  • 签到天数: 74 天

    [LV.6]常住居民II

    99

    主题

    236

    回帖

    1715

    积分

    管理员

    积分
    1715
    发表于 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. )
    复制代码
    [源码] 炸開圖塊修改,然後再依原圖塊存檔的小程序
    江西恒正建设有限公司  钢结构壹级企业 涵盖了从轻型到重型的钢结构,还包括了大型异性空间钢结构、膜结构、索结构等多个专业领域。电话:18779173660  欢迎来电合作
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池| |网站地图

    GMT+8, 2024-9-8 10:56 , Processed in 0.066212 second(s), 21 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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