明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: preone

快速作块(源码)..

  [复制链接]
 楼主| 发表于 2012-7-28 21:09:36 | 显示全部楼层
illcyt 发表于 2012-7-28 14:40
思路不错,但是整个做起来的话和block差不多时间啊,不过还是支持下

呵呵  你仔细看看 还是很快哦~
发表于 2012-7-28 21:56:48 | 显示全部楼层
  1. ;; 伪源码需要e派工具箱(XCAD)的支持
  2. ;; 随机图块
  3. (defun c:tt (/ p1 ss)
  4.   (princ "\n选择实体: ")
  5.   (if (and (setq ss (ssget))
  6.              (setq p1 (UPOINT 1 "" "点" (xyp-get-9pt s5 5) nil))
  7.       )
  8.     (xyp-Rand-Block ss p1)
  9.   )
  10.   (princ)
  11. )
 楼主| 发表于 2012-7-29 11:52:04 | 显示全部楼层
xyp1964 发表于 2012-7-28 21:56

院长的代码简洁明了~ 敬礼~~
发表于 2012-7-31 14:30:12 | 显示全部楼层
很好用,可是有一点,当不选择块名时,生成的是*u前缀的块名,当你想修改块名时则不能修改,望修改以时间为块名来定义无名块
 楼主| 发表于 2012-7-31 18:54:17 | 显示全部楼层
本帖最后由 preone 于 2012-8-2 21:23 编辑
longer1000 发表于 2012-7-31 14:30
很好用,可是有一点,当不选择块名时,生成的是*u前缀的块名,当你想修改块名时则不能修改,望修改以时间为 ...


中午有点忙 刚才改了一下~  块名现在是当前时间了  主程序如下:
(defun c:bb (/  bent bpoint bname tmp)
  (prompt "\n选择作块对象:")
  (setq bent (ssget))
  (if (null (setq bpoint (getpoint "\n选择块基点<0,0,0>:")))
    (setq bpoint '(0 0 0))
  )
  (prompt "\n选择文本作块名:")
  (setq tmp (ssget '((0 . "*text"))))
  (if
    (null tmp)
     (setq bname (rtos (getvar 'cdate) 2))
     (setq bname (cdr (assoc 1 (entget (ssname tmp 0)))))  
  )
  (emkblk bent bpoint bname)
  (prin1)
)

呵呵 你先试试,有需要改进的还请再指教~~

点评

非常好,谢谢  发表于 2012-8-1 08:33
发表于 2012-7-31 20:19:12 | 显示全部楼层
good    !
发表于 2012-8-1 08:35:36 | 显示全部楼层
preone 发表于 2012-7-31 18:54
中午有点忙 刚才改了一下~  块名现在是当前时间了  主程序如下:
(defun c:bb (/  bent bpoint bname  ...

非常感谢,个人觉得指定文本为块名还没有直接输入块名方便,如果能有记忆上次的块名更好。
 楼主| 发表于 2012-8-1 17:41:24 | 显示全部楼层
kinglzk2000 发表于 2012-7-31 20:19
good    !

 楼主| 发表于 2012-8-1 19:20:27 | 显示全部楼层
本帖最后由 preone 于 2012-8-2 21:23 编辑
longer1000 发表于 2012-8-1 08:35
非常感谢,个人觉得指定文本为块名还没有直接输入块名方便,如果能有记忆上次的块名更好。


加上了输入块名的操作~ 主程序如下:

(defun c:bb (/ bent bpoint bname tmp)
  (prompt "\n选择作块对象:")
  (setq bent (ssget))
  (if (null (setq bpoint (getpoint "\n选择块基点<0,0,0>:")))
    (setq bpoint '(0 0 0))
  )
  (and (= (setq bname (getstring "\t输入块名 或 空格后选择块名文本:")) "")
       (and
         (null (and
                 (princ "\n选择文本作块名 或 空格用当前时间作块名:")
                 (setq tmp (ssget '((0 . "*text"))))
                 (setq bname (cdr(assoc 1(entget (ssname tmp 0)))))
               )
         )
         (setq bname (rtos (getvar 'cdate) 2))
       )
  )
  (emkblk bent bpoint bname)
  (prin1)
)

如果要加记忆功能的话 加一个全局变量就可以了~具体可以参考这里~
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=93390&fromuid=401233

评分

参与人数 1明经币 +1 金钱 +5 收起 理由
longer1000 + 1 + 5

查看全部评分

发表于 2012-8-2 11:11:10 | 显示全部楼层
命令: bb
选择作块对象:
选择对象: 找到 1 个

选择对象: 找到 1 个,总计 2 个

选择对象:

选择块基点<0,0,0>:     输入块名 或 空格后选择块名文本:11 ; 错误: no function
definition: EMKBLK


请教,这是怎么回事啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 16:04 , Processed in 0.174475 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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