数字圆圈属性块,求助!
报错:指定圆心位置: DXF 组不正确: (1 . 1),求助高手帮忙稍作修改!;;==============圆圈数字属性块=================
(defun c:tt3(/ sc zr a b pt name)
(if (= sc nil) (setq sc 1))
(setq a (getreal (strcat "\n请输入图框比例<" (rtos sc) ">: ")))
(if (= a nil)
(progn
(setq a sc)
(setq bj (* a 2.5)) ;设置圆圈半径
(setq zg (* a 3.0)) ;设置字高
)
(progn
(setq bj (* a 2.5)) ;设置圆圈半径
(setq zg (* a 3.0)) ;设置字高
(setq sc a)
)
)
(if (= zr nil) (setq zr 1))
(setq b (getint (strcat "\n请输入圆中数字<" (rtos zr) ">: ")))
(if (= b nil) (setq b zr) (setq zr b))
(while (setq pt (getpoint "\n指定圆心位置: "))
(setq name (getvar "clayer")) ;记录当前图层名
(entmake (list '(0 . "BLOCK") ;对象类型:块
'(70 . 2) ;组码70:设置属性块是否可以编辑
'(10 0.0 0.0 0.0) ;组码10:设置基准点
(cons 2 name)) ;组码2:块名为图层名
)
(entmake (list '(0 . "CIRCLE") ;对象类型:圆
'(10 0.0 0.0 0.0) ;组码10:设置圆的中心点
(cons 40 bj) ;组码40:设置圆的半径
'(370 . 10)) ;组码370:设置圆的线宽
)
(entmake '((0 . "ENDBLK")) ;图元类型:ENDBLK
)
(entmake (list '(0 . "INSERT") ;对象类型:插入点
'(66 . 1) ;可变属性跟随标志(可选;默认值 = 0);如果属性跟随标志的值为 1,则跟随插入的将是一系列属性图元,并以一个 SEQEND 图元终止
(cons 2 name) ;块名
(cons 10 pt)) ;插入点
)
(entmake (list '(0 . "ATTRIB") ;对象类型:属性
'(100 . "AcDbEntity")
'(100 . "AcDbText")
(cons 10 pt) ;组码10:文字起点
(cons 11 pt) ;组码10:对齐点
(cons 40 zg) ;组码40:文字高度
(cons 1 b) ;组码1:值(圆中数字)
'(71 . 0) ;组码71:文字生成标志(默认值=0)
'(72 . 1) ;组码72:文字水平对齐类型(0=左对正;1=居中对正;2=右对正;3=对齐(如果垂直对齐=0);4=中间(如果垂直对齐=0);5=拟合(如果垂直对齐=0))
'(100 . "AcDbAttribute")
'(2 . "A") ;组码2:属性标记字符串
'(70 . 0) ;组码70:属性标志(1=属性不可见(不出现);2=固定属性;4=输入属性时要求进行验证;8=属性为预置(插入时无提示))
'(41 . 0.7) ;组码41:文字宽度比例
'(73 . 2) ;组码73:字段长度(默认值=0)
'(74 . 2)) ;组码74:文字垂直对齐类型(0=基线对正;1=底端对正;2=居中对正;3=顶端对正)
)
(entmake '((0 . "SEQEND")))
(setq b (1+ b))
)
(princ)
)
本帖最后由 yshf 于 2024-4-26 09:46 编辑
; ;; 修改为
; ;; =============圆圈数字属性块=================
(defun c:tt3(/ sc zr a b pt name)
(if (= sc nil) (setq sc 1))
(setq a (getreal (strcat "\n请输入图框比例<" (rtos sc) ">: ")))
(if (= a nil)
(progn
(setq a sc)
(setq bj (* a 2.5)) ;设置圆圈半径
(setq zg (* a 3.0)) ;设置字高
)
(progn
(setq bj (* a 2.5)) ;设置圆圈半径
(setq zg (* a 3.0)) ;设置字高
(setq sc a)
)
)
(if (= zr nil) (setq zr 1))
(setq b (getint (strcat "\n请输入圆中数字<" (rtos zr) ">: ")))
(if (= b nil) (setq b zr) (setq zr b))
(while (setq pt (getpoint "\n指定圆心位置: "))
(setq name (getvar "clayer")) ;记录当前图层名
; ;; 块是否存在判断
(if (not (tblsearch "block" name))
(progn
(entmake (list '(0 . "BLOCK") ;对象类型:块
'(70 . 2) ;组码70:设置属性块是否可以编辑
'(10 0.0 0.0 0.0) ;组码10:设置基准点
(cons 2 name) ;组码2:块名为图层名
)
)
(entmake (list '(0 . "CIRCLE") ;对象类型:圆
'(10 0.0 0.0 0.0) ;组码10:设置圆的中心点
(cons 40 bj) ;组码40:设置圆的半径
'(370 . 10)) ;组码370:设置圆的线宽
)
(entmake '((0 . "ENDBLK"))) ;图元类型:ENDBLK
)
)
(entmake (list '(0 . "INSERT") ;对象类型:插入点
'(66 . 1) ;可变属性跟随标志(可选;默认值 = 0);如果属性跟随标志的值为 1,则跟随插入的将是一系列属性图元,并以一个 SEQEND 图元终止
(cons 2 name) ;块名
(cons 10 pt) ;插入点
'(41 . 1.0)
'(42 . 1.0)
'(42 . 1.0)
)
)
(entmake (list '(0 . "ATTRIB") ;对象类型:属性
'(100 . "AcDbEntity")
'(100 . "AcDbText")
(cons 10 pt) ;组码10:文字起点
;(cons 11 pt) ;组码10:对齐点
(cons 40 zg) ;组码40:文字高度
(cons 1 (itoa b)) ;组码1:值(圆中数字)
'(41 . 0.7) ;组码41:文字宽度比例
'(50 . 0.0)
'(51 . 0.0)
'(71 . 0) ;组码71:文字生成标志(默认值=0)
'(72 . 1) ;组码72:文字水平对齐类型(0=左对正;1=居中对正;2=右对正;3=对齐(如果垂直对齐=0);4=中间(如果垂直对齐=0);5=拟合(如果垂直对齐=0))
(cons 11 pt) ;组码10:对齐点
'(100 . "AcDbAttribute")
'(2 . "A") ;组码2:属性标记字符串
'(70 . 0) ;组码70:属性标志(1=属性不可见(不出现);2=固定属性;4=输入属性时要求进行验证;8=属性为预置(插入时无提示))
'(73 . 2) ;组码73:字段长度(默认值=0)
'(74 . 2)) ;组码74:文字垂直对齐类型(0=基线对正;1=底端对正;2=居中对正;3=顶端对正)
)
(entmake '((0 . "SEQEND")))
(setq b (1+ b))
)
(princ)
) 本帖最后由 yshf 于 2024-4-26 10:08 编辑
; ;; 或者改为如下较好
; ;; ==============圆圈数字属性块=================
(defun c:tt3(/ sc zr a b pt name)
(defun EntamkeBlock(name)
(if (not (tblsearch "block" name))
(progn
(entmake (list '(0 . "BLOCK") ;对象类型:块
'(70 . 2) ;组码70:设置属性块是否可以编辑
'(10 0.0 0.0 0.0) ;组码10:设置基准点
(cons 2 name) ;组码2:块名为图层名
)
)
(entmake (list '(0 . "CIRCLE") ;对象类型:圆
'(10 0.0 0.0 0.0) ;组码10:设置圆的中心点
(cons 40 bj) ;组码40:设置圆的半径
'(370 . 10)) ;组码370:设置圆的线宽
)
(entmake '((0 . "ENDBLK"))) ;图元类型:ENDBLK
)
)
)
(if (= sc nil) (setq sc 1))
(setq a (getreal (strcat "\n请输入图框比例<" (rtos sc) ">: ")))
(if (= a nil)
(progn
(setq a sc)
(setq bj (* a 2.5)) ;设置圆圈半径
(setq zg (* a 3.0)) ;设置字高
)
(progn
(setq bj (* a 2.5)) ;设置圆圈半径
(setq zg (* a 3.0)) ;设置字高
(setq sc a)
)
)
(if (= zr nil) (setq zr 1))
(setq b (getint (strcat "\n请输入圆中数字<" (rtos zr) ">: ")))
(if (= b nil) (setq b zr) (setq zr b))
(EntamkeBlock (setq name (getvar "clayer")))
(while (setq pt (getpoint "\n指定圆心位置: "))
(entmake (list '(0 . "INSERT") ;对象类型:插入点
'(66 . 1) ;可变属性跟随标志(可选;默认值 = 0);如果属性跟随标志的值为 1,则跟随插入的将是一系列属性图元,并以一个 SEQEND 图元终止
(cons 2 name) ;块名
(cons 10 pt) ;插入点
'(41 . 1.0)
'(42 . 1.0)
'(42 . 1.0)
)
)
(entmake (list '(0 . "ATTRIB") ;对象类型:属性
'(100 . "AcDbEntity")
'(100 . "AcDbText")
(cons 10 pt) ;组码10:文字起点
;(cons 11 pt) ;组码10:对齐点
(cons 40 zg) ;组码40:文字高度
(cons 1 (itoa b)) ;组码1:值(圆中数字)
'(41 . 0.7) ;组码41:文字宽度比例
'(50 . 0.0)
'(51 . 0.0)
'(71 . 0) ;组码71:文字生成标志(默认值=0)
'(72 . 1) ;组码72:文字水平对齐类型(0=左对正;1=居中对正;2=右对正;3=对齐(如果垂直对齐=0);4=中间(如果垂直对齐=0);5=拟合(如果垂直对齐=0))
(cons 11 pt) ;组码10:对齐点
'(100 . "AcDbAttribute")
'(2 . "A") ;组码2:属性标记字符串
'(70 . 0) ;组码70:属性标志(1=属性不可见(不出现);2=固定属性;4=输入属性时要求进行验证;8=属性为预置(插入时无提示))
'(73 . 2) ;组码73:字段长度(默认值=0)
'(74 . 2)) ;组码74:文字垂直对齐类型(0=基线对正;1=底端对正;2=居中对正;3=顶端对正)
)
(entmake '((0 . "SEQEND")))
(setq b (1+ b))
)
(princ)
)
yshf 发表于 2024-4-26 10:06
; ;; 或者改为如下较好
; ;; ==============圆圈数字属性块=================
(defun c:tt3(/ sc zr a b...
非常感谢出手帮忙!!! 很好用,虽然一般用不到!
页:
[1]