明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xman00

快速建块的问题 知道的进

  [复制链接]
发表于 2013-3-25 22:54:49 | 显示全部楼层
获取每一个图元的包围盒然后取最小和最大值以获取对象中点这样遍历是不是很浪费呀?
如果先设定一个点比如说原点,再获取包围盒,然后修改插入点是不是要快一点啊?
发表于 2013-9-29 17:35:46 | 显示全部楼层
楼上的程序很好,我很需要,但是程序在输入快名的时候出错。能不能整理一下,干脆取消输入快名行了,只要自动赋名就可以。
发表于 2013-9-30 07:57:41 | 显示全部楼层
本帖最后由 USER2128 于 2013-9-30 08:01 编辑
zhengxq7 发表于 2013-9-29 17:35
楼上的程序很好,我很需要,但是程序在输入快名的时候出错。能不能整理一下,干脆取消输入快名行了,只要自 ...

;;;________________________________________________________________
;;; 将所选实体转为块(指定插入点),并自动赋名(优化版)。
;;; 作者: USER2128于bbs.mjtd.com, 20130930
(defun c:BB (/ pt ss ent name)
  (if (and (setq pt (getpoint "\n请指定将要制成的块的插入点:"))
           (princ "\n请选取要制成块的那些实体:")
           (setq ss (ssget))
           )
    (progn
      (command "._copybase" "_non" pt ss "")
      (command "._PASTEBLOCK" "_non" pt)
      (command "._erase" ss "")
      (setq ent (entget (entlast))
            name (cdr (assoc 2 ent))
            )
      (princ "\n制块成功!块名=") (princ name)
      )
      
    (princ "\n未指定插入点或未选取实体!")
    )
  (princ))
;;;________________________________________________________________
回复 支持 0 反对 1

使用道具 举报

发表于 2013-9-30 09:45:55 | 显示全部楼层
万分感谢楼上的,明经是个好地方,有那么多好心的人。
再次表示感谢
发表于 2013-9-30 11:08:43 | 显示全部楼层
试试这个,以前编的,觉得还算方便

(defun c:qk (/ i maxpoint maxx maxx0 maxy maxy0 minpoint minx minx0 miny miny0 name pmax pmin pt ss)
  (vl-load-com)
  (setvar "cmdecho" 0)
  (setq ss (ssget))
  (if ss
    (progn
      (command ".undo" "be")
      (setq pt (getpoint "\n指定块插入基点:<中心>"))
      (if (= pt nil)
        (progn
          (setq minx0 1e6  miny0 1e6 maxx0 -1e6  maxy0 -1e6 )
          (repeat (setq i (sslength ss))
            (setq name (ssname ss (setq i (1- i))))
            (vla-getboundingbox (vlax-ename->vla-object name) 'minpoint 'maxpoint)
            (setq pmax (vlax-safearray->list maxpoint)  pmin (vlax-safearray->list minpoint))
            (setq minx (car pmin)  maxx (car pmax)  miny (cadr pmin)  maxy (cadr pmax))
            (if (> minx0 minx) (setq minx0 minx))
            (if (> miny0 miny) (setq miny0 miny))
            (if (< maxx0 maxx) (setq maxx0 maxx))
            (if (< maxy0 maxy) (setq maxy0 maxy) )
          )
          (setq pt (list (/ (+ minx0 maxx0) 2) (/ (+ miny0 maxy0) 2) 0.0))
        )
      )
      (setq snap (getvar "osmode"))
      (setvar "osmode" 0)
      (setq name (substr (rtos (getvar "CDATE") 2 8) 10 17))
      (command "block" name pt ss "")
      (command "INSERT" name pt 1 1 0)
      (princ (strcat "\n已新建块名为 \"" name "\" 的图块"))
      (setvar "osmode" snap)
      (command ".undo" "e")
    )
  )
  (princ)
)
回复 支持 2 反对 0

使用道具 举报

发表于 2013-12-13 15:08:39 | 显示全部楼层
都很好用,都不知道该用哪个了。谢谢。
发表于 2014-4-17 09:36:50 | 显示全部楼层
langjs 发表于 2013-9-30 11:08
试试这个,以前编的,觉得还算方便

(defun c:qk (/ i maxpoint maxx maxx0 maxy maxy0 minpoint minx mi ...

谢谢,正需要。
发表于 2015-2-5 23:38:04 | 显示全部楼层
langjs 发表于 2013-9-30 11:08
试试这个,以前编的,觉得还算方便

(defun c:qk (/ i maxpoint maxx maxx0 maxy maxy0 minpoint minx mi ...

狼大侠,能否改编一个块名为:固定前缀+时间   的版本呢?
其它都不变,比如生成的块都名为:狼20150205233413,其中时间为做块当时的电脑时间,非常需要,期盼啊
发表于 2015-11-25 10:37:19 | 显示全部楼层
我当宝贝收藏了!!
发表于 2018-9-13 16:49:31 | 显示全部楼层
本帖最后由 htlaser 于 2018-9-13 16:56 编辑
fire9527 发表于 2015-2-5 23:38
狼大侠,能否改编一个块名为:固定前缀+时间   的版本呢?
其它都不变,比如生成的块都名为:狼20150205 ...

  • 块名称:固定前缀+时间  (华星切割2018-09-13-16-38-32)

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-14 14:40 , Processed in 0.261015 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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