south 发表于 2023-8-28 20:27:04

关于读TXT配置文件的方式新建图层问题

本帖最后由 south 于 2023-8-28 20:27 编辑

无意中翻到了这个贴子,这个创建图层的思路也方便,可自定义修改自己想要的图层。
有两点能否请大师帮忙改进一下:
1.该程序只能读取配置文件存放位置:D:\Personal\Desktop\layer_data.txt 的目录中文件,改成无此目录及文件时创建一个目录、文件(相当于生成一个默认模板一样)
2.加入字体样式与标注样式同时也创建

原贴地址在这里----->>>读TXT配置文件的方式新建图层 <<<-------



liuhe 发表于 2023-8-29 08:42:48

cad本身是可以导出一种las文件格式,这个文件可以用记事本打开。文件内容可以参考那个

baoyizhu 发表于 2023-12-21 22:05:06

本帖最后由 baoyizhu 于 2023-12-21 22:06 编辑

;读TXT配置文件的方式新建图层
(defun ge_xjtc (/ DATA FF STRSS)
(setvar "cmdecho" 0)
(command ".undo" "BE")
;加载线型
(defun loadltname ( lt / cm s1 )
(setq cm (getvar 'CMDECHO))
(Cond
    ((= (type lt) 'str)
      (if (not (tblsearch "LTYPE" lt))
      (vla-load (vla-get-Linetypes (vla-get-ActiveDocument (vlax-get-acad-object))) lt "acadiso.lin")
      (progn (setvar 'CMDECHO 0)(vl-cmdf "-linetype" "load" lt (findfile "acadiso.lin") "Y" "")(setvar 'CMDECHO cm))
      )
    )
    ((= (type lt) 'list)(foreach s1 lt (loadltname s1)))
) t
)
(loadltname '("CENTER" "DASHDOT" "DASHED" "PHANTOM" "HIDDEN" "ZIGZAG"))

(setq FF (open "D:\\Program Files\\AutoCAD2021\\菲林设计助手\\layer_data.txt" "r"));;dat文件路径
(read-line FF) ; ;略过第一行 图层名称 线型 颜色 线宽 图层说明
(setq DATA (read-line FF))
(while (/= DATA "end")
    (setq STRSS (read (strcat "(" DATA ")")))
    (entmake (list '(0 . "layer")
   '(100 . "AcDbSymbolTableRecord")
   '(100 . "AcDbLayerTableRecord")
    (cons 2 (car STRSS))
   '(70 . 0)
   (cons 6 (cadr STRSS))
   (cons 62 (caddr STRSS))
   (cons 370 (nth 3 STRSS))
   )
    )
;赋值图层说明
(vla-put-Description
    (vlax-ename->vla-object (tblobjname "layer" (car STRSS)))
   (nth 4 STRSS)
)
    (setq DATA (read-line FF))
)
(close FF)

(command ".undo" "E")
(princ "\n---<<新建图层已完成>>---")
(princ)
)
(ge_xjtc);加载程序
(defun ge_wzys (/ sty1);设置文字样式
(setvar "cmdecho" 0)
(setq sty1 '(
               (0 . "STYLE")
               (100 . "AcDbSymbolTableRecord")
               (100 . "AcDbTextStyleTableRecord");子类名称
               (2 . "JianTiZi");样式名
               (70 . 0);二进制数,标准flag:4-垂直,16-注释性,20-垂直+注释性
               (40 . 0.0);高度:0为不固定
               (41 . 1.0);宽度因子
               (50 . 0.01);倾斜角度(弧度制)
               (71 . 0) ;二进制数,颠倒反向:2-反向,4-颠倒,6-颠倒反向
               (42 . 3.5);历史记录:上次使用的字高
               (3 . "isocp.shx");小字体路径
               (4 . "gbcbig.shx");大字体路径
             ))
(if (null (tblsearch "style" "JianTiZi"))
      (entmake sty1)
      )
(setvar 'TEXTSTYLE "jiantizi")
(princ "\n新建文字样式成功\n")
(princ)
)
(ge_wzys);加载文字样式

(defun ge_bzys ()      ;新建标注样式"biaozhu"
(command "_undo" "be")
(ddstyle)
)
(defun ddstyle (/ sc)
(setq sc 1)
(setvar "cmdecho" 0)
(setvar "dimclrd" 4)                        ;为尺寸线、箭头和标注引线指定颜色
(setvar "dimclre" 4)                        ;为尺寸界线指定颜色
(setvar "dimclrt" 3)                        ;为标注文字指定颜色
(setvar "dimdle" (* sc 0))                ;当使用小斜线代替箭头进行标注时,设置尺寸线超出尺寸界线的距离(超出标记)
(setvar "dimexe" (* sc 1.25))                ;指定尺寸界线超出尺寸线的距离
(setvar "dimexo" (* sc 0.5))                ;起点偏移量
(setvar "dimblk" ".")                        ;实心闭合箭头
(setvar "dimasz" (* sc 2.5))                ;控制尺寸线和引线箭头的大小。并控制基线的大小
(setvar "dimcen" 1)                        ;圆心标记-无
(setvar "dimtxsty" "jiantizi")      ;指定标注的文字样式
(setvar "dimtxt" (* sc 3.5))                ;指定标注文字的高度
(setvar "dimtad" 1)                        ;文字垂直位置(上方)
(setvar "dimjust" 0)                        ;文字水平位置(居中)
(setvar "dimtih" 0)                        ;线内文字对齐(与尺寸线对齐)
(setvar "dimtoh" 1)                        ;线外文字对齐(与尺寸线对齐)
(setvar "dimgap" (* sc 1))                ;文字从尺寸线偏移
(setvar "dimtmove" 0)                        ;文字不在默认位置时,放在 尺寸线上方,不加引线
(setvar "dimscale" 1)                        ;全局比例
(setvar "dimdec" 3)                        ;精度
(setvar "dimlfac" 1)                        ;测量比例因子
(setvar "dimzin" 8)                        ;消零
(setvar "dimazin" 2)                        ;角度消零
(setvar "dimadec" 3)                        ;角度精度
(setvar "dimupt" 1)                        ;手动放置标注文字(开)
(if (not (tblsearch "dimstyle" "biaozhu"))
    (command "-dimstyle" "S" "biaozhu")
)                                       
(if (not (tblsearch "dimstyle" "biaozhu$2"))
    (command "-dimstyle" "s" "biaozhu$2")
);生成子标注样式$2 角度标注,$3 直径标注$4 半径标注,$6 坐标标注 $0 线性标注, $7引线和公差
(command "dimstyle" "r" "biaozhu")      ;置为当前
(command "_undo" "e")
(princ "\n新建标注样式成功\n")
(princ)
)
(ge_bzys);加载标注样式
页: [1]
查看完整版本: 关于读TXT配置文件的方式新建图层问题