明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9940|回复: 49

快速作块(源码)..

  [复制链接]
发表于 2012-7-27 22:52:46 | 显示全部楼层 |阅读模式
本帖最后由 preone 于 2012-8-2 21:25 编辑


图片只演示了选择文本(单行或多行)作块名的方式,作无名块只需在选择文本时直接空格跳过即可..
由于第一次发帖,程序难免粗糙,还请多多指正..
另外,此程序作块部分的子程序,均源自 langjs 版主 的分享,多谢 langjs 版主 ~













;以下为程序部分,命令为bb。

(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)
     (emkunameblk bent bpoint)
     (progn
       (setq bname (cdr (assoc 1 (entget (ssname tmp 0)))))
       (emkblk bent bpoint bname)
     )
  )
(princ)
)

;以下是作块子程序
(defun emkblk (ss pt name / i)
  (entmake (list '(0 . "block")
   (cons 2 bname)
   '(70 . 0)
   (cons 10 bpoint)
    )
  )
  (repeat (setq i (sslength ss))
    (entmake (cdr (entget (ssname ss (setq i (1- i))))))
  )
  (entmake '((0 . "endblk")))
  (command "_.erase" ss "")
  (entmake (list '(0 . "insert") (cons 2 name) (cons 10 pt)))
)
(defun emkunameblk (ss pt / i name)
  (entmake
    (list '(0 . "block") '(2 . "*u") '(70 . 1) (cons 10 pt))
  )
  (repeat (setq i (sslength ss))
    (entmake (cdr (entget (ssname ss (setq i (1- i))))))
  )
  (setq name (entmake '((0 . "endblk"))))
  (command "_.erase" ss "")
  (entmake (list '(0 . "insert") (cons 2 name) (cons 10 pt)))
  name
)
;end

希望对有需要的同学有一点点帮助~~




本帖子中包含更多资源

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

x
发表于 2019-8-20 18:44:14 | 显示全部楼层
  1. (defun emkunameblk (ss pt / i name)
  2.   (entmake (list '(0 . "block")
  3.                  '(2 . "*u")
  4.                  '(70 . 1)
  5.                  (cons 10 pt)
  6.            )
  7.   )
  8.   (repeat (setq i (sslength ss))
  9.     (entmake (cdr (entget (ssname ss (setq i (1- i))))))
  10.   )
  11.   (setq name (entmake '((0 . "endblk"))))
  12.   (command "_.erase" ss "")
  13.   (entmake (list '(0 . "insert") (cons 2 name) (cons 10 pt)))
  14.   name
  15. )
  16. (defun emkblk (ss pt name / i)
  17.   (entmake (list '(0 . "block")
  18.                  (cons 2 bname)
  19.                  '(70 . 0)
  20.                  (cons 10 bpoint)
  21.            )
  22.   )
  23.   (repeat (setq i (sslength ss))
  24.     (entmake (cdr (entget (ssname ss (setq i (1- i))))))
  25.   )
  26.   (entmake '((0 . "endblk")))
  27.   (command "_.erase" ss "")
  28.   (entmake (list '(0 . "insert") (cons 2 name) (cons 10 pt)))
  29. )
发表于 2012-7-28 00:27:13 | 显示全部楼层
这个快名是时间吗?和贱人工具箱那个一样?
发表于 2012-7-28 07:42:13 来自手机 | 显示全部楼层
学习了,,谢谢
 楼主| 发表于 2012-7-28 09:23:38 | 显示全部楼层
illcyt 发表于 2012-7-28 00:27
这个快名是时间吗?和贱人工具箱那个一样?

没有用过贱人工具箱,所以不清楚你说的是什么功能~
我附加一个演示图片 你看看是不是需要的~
 楼主| 发表于 2012-7-28 09:24:23 | 显示全部楼层
xujinhua 发表于 2012-7-28 07:42
学习了,,谢谢

多谢鼓励~~
发表于 2012-7-28 10:02:23 | 显示全部楼层
支持下
 楼主| 发表于 2012-7-28 11:03:06 | 显示全部楼层
仲文玉 发表于 2012-7-28 10:02
支持下

谢谢版主鼓励~
发表于 2012-7-28 11:06:34 | 显示全部楼层
谢谢楼主的分享!
先下载收藏看看,学习学习。
谢谢
 楼主| 发表于 2012-7-28 11:20:01 | 显示全部楼层
461045462 发表于 2012-7-28 11:06
谢谢楼主的分享!
先下载收藏看看,学习学习。
谢谢

发表于 2012-7-28 14:40:23 | 显示全部楼层
preone 发表于 2012-7-28 09:23
没有用过贱人工具箱,所以不清楚你说的是什么功能~
我附加一个演示图片 你看看是不是需要的~

思路不错,但是整个做起来的话和block差不多时间啊,不过还是支持下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 15:53 , Processed in 0.332194 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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