乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 71|回复: 0

[编程交流] 修复命令ZeroZ

[复制链接]

27

主题

182

帖子

163

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
139
发表于 2022-7-5 19:55:35 | 显示全部楼层 |阅读模式
大家好,
 
有人可以帮我修复这段代码,它可以将所有实体的坐标Z更改为0,但是,一个接一个!。。。有可能修复它吗?。。。
 
提前感谢。。。
 
  1.                                 ; ZeroZ.lsp
  2.                                 ;
  3.                                 ; Change Z coordinate of all selected entities to 0 (OCS)
  4.                                 ;
  5.                                 ; Copyright (c) 2000 Michael Puckett All Rights Reserved
  6.                                 ;
  7.                                 ; ==================================================?=====
  8. (defun c:zeroz
  9.        (/                        ; local functions (defuns)
  10.         *error*        *begin*        *end* *zeroz* *children* ; local vars
  11.         ss i ent ents)
  12.                                 ; local defun *error*
  13. (defun *error* (s)
  14.    (*end*)
  15.    (princ (strcat "Error: " s ".\n"))
  16.    (princ)
  17. )
  18.                                 ; local defun *begin*
  19. (defun *begin* ()
  20.    (setvar "cmdecho" 0)
  21.    (while (eq 8 (logand 8 (getvar "undoctl")))
  22.      (command ".undo" "_end")
  23.    )
  24.    (if        (zerop (logand 2 (getvar "undoctl")))
  25.      (if (eq 1 (logand 1 (getvar "undoctl")))
  26. (command ".undo" "_begin")
  27.      )
  28.    )
  29. )
  30.                                 ; local defun *end*
  31. (defun *end* ()
  32.    (if        (eq 8 (logand 8 (getvar "undoctl")))
  33.      (command ".undo" "_end")
  34.    )
  35.    (setvar "cmdecho" 1)
  36. )
  37.                                 ; local defun *zeroz*
  38. (defun *zeroz* (ent)
  39.    (entmod
  40.      (mapcar
  41. '(lambda (x)
  42.    (cond
  43.      ((member (car x) '(10 11 12 13 14))
  44.       (cons (car x) (list (cadr x) (caddr x) 0.0))
  45.      )
  46.      ((eq 38 (car x)) '(38 . 0.0))
  47.      (t x)
  48.    )
  49. )
  50. (entget ent)
  51.      )
  52.    )
  53. )
  54.                                 ; local defun *children*
  55. (defun *children* (ent / d r)
  56.    
  57. ;*------------------------------------
  58. ;(if (<= j 6)
  59. (command "_move" ent "" '(0.0 0.0 0.0) (cons n '(0.0 0.0)))
  60. (setq i (1+ j))
  61. ;  )
  62. (if (> j 6)
  63.    ((setq n (+ 5000 n)
  64.    j 1
  65.     )
  66.    )
  67. )
  68. ;  )                                        ; TESTE
  69. ;*-----------------------------------
  70.    
  71.    (if        (assoc 66 (entget ent))
  72.      (reverse
  73. (while
  74.   (/= "SEQEND"
  75.       (cdr (assoc 0 (setq d (entget (setq ent (entnext ent))))))
  76.   )
  77.    (setq r (cons (cdr (assoc -1 d)) r))
  78. )
  79.      )
  80.    )
  81. )
  82.                                 ; main
  83. (cond
  84.    ((setq i  -1
  85.    j 1
  86.    n 0
  87.    ss (ssget)
  88.     )
  89. ;--------------------
  90. ;( command "_.explode" all )
  91. ;(command "_explode" ent "")
  92. ;    (setq ent (entnext))
  93.    
  94. ;  (setq pa (getvar "peditaccept"))
  95. ;  (setvar "peditaccept" 1)
  96. ;  (setq ent (entlast))
  97. ;  (command "pedit" "m" ent "" "j" "0.01" "")
  98. ;  (setvar "peditaccept" pa)
  99.    
  100. ;         (repeat (sslength ss); TESTE
  101. ;            (setq ent (ssname ss (setq i (1+ i))));TESTE
  102.    
  103.    
  104. ;       (foreach x (setq ents (*children* ent)) (*zeroz* x));TESTE
  105. ;       (if ents;TESTE
  106. ;         (entupd ent);TESTE
  107. ;       );TESTE
  108.    
  109. ;--------------------
  110.     (*begin*)
  111.     (princ "\nZeroing Z's for entity(s) ...")
  112.     (repeat (sslength ss)
  113.       (*zeroz* (setq ent (ssname ss (setq i (1+ i)))))
  114.       (foreach x (setq ents (*children* ent)) (*zeroz* x))
  115.       (if ents
  116. (entupd ent)
  117.       )
  118.                                 ; in case a bazillion entities were selected
  119.                                 ; let the user know we have not died
  120.       (if (zerop (rem i 100))
  121. (princ ".")
  122.       )
  123.     )
  124.     (princ " [Done]")
  125.     (*end*)
  126.    )
  127.    (t (princ "\nNothing selected."))
  128. )
  129.                                 ; terminate
  130. (princ)
  131. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 00:40 , Processed in 0.803721 second(s), 54 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表