本帖最后由 20060510412 于 2022-11-14 14:01 编辑
目前有一个生成属性块的子函数,可以正常运行,但是只能生成左对齐的文字。
现在想增加一个文字对齐的参数,从而可以生成各种对齐方式。
目前对于文字对齐一头雾水,请高手帮忙指点一二。
- ;;说明:制作并插入属性块
- ;;参数:name_block:块对象名称
- ;;参数:list_tagstring:属性块标签文本,可以支持多个,如(list "tagstring1" "tagstring2")
- ;;参数:list_textstring:属性块标签值,可以支持多个,与tagstring相对应,如(list "textstring2" "textstring2"),默认显示的是最后一个string。
- ;;参数:list_coordinate:块引用坐标,例如(list 0 0 0)
- ;;参数:textHeight:字体高度,如2.5
- ;;参数:TextStyle:字体样式,如"FSDB"
- ;;参数:TextWidthScale:字体的宽度因子,如0.75
- ;;返回:生成的属性块引用图元名
- ;;示例:(block_att_make "name" (list "name" "name1") (list "构造图" "构造图2") (list 0 0 0) 2.5 "FSDB" 0.75)
- (defun block_att_make(name_block list_tagstring list_textstring list_coordinate textHeight TextStyle TextWidthScale )
- (entmake (list
- '(0 . "block")
- (cons 2 name_block) ;图块名
- '(70 . 2) ;块具有非固定属性定义
- '(10 0.0 0.0 0.0)) ;基点
- );block定义
- (entmake '((0 . "ENDBLK")));结束标志
-
- (entmake (list '(0 . "INSERT")
- '(66 . 1)
- (cons 2 name_block)
- (append (list 10) list_coordinate) ;插入点
- '(41 . 500.0)
- '(42 . 500.0)
- '(43 . 500.0)
- )
- )
- (mapcar
- '(lambda(a b)
- (entmake
- (list
- '(0 . "ATTRIB")
- '(100 . "AcDbEntity")
- '(100 . "AcDbText")
- (append (list 10) list_coordinate) ;插入点
- ;'(10 0.0 0.0 0.0)
- (cons 40 textHeight) ;字体高度
- (cons 7 TextStyle) ;字体样式
- (cons 41 TextWidthScale) ;字体宽度因子
- (cons 1 b) ;tagValue
- '(100 . "AcDbAttribute")
- (cons 2 a) ;tagstring
- '(70 . 0);(70 . 1)属性字不可见 (70 . 0)属性字可见
-
- )
- )
- )
- list_tagstring
- list_textstring
- )
-
- (entmake '((0 . "SEQEND")))
- (entlast)
- )
|