1. ;;说明:压力管道焊缝编号辅统工具 V1.1(2020.9.5)
    2. (defun c:SWED(/ abnum al-insertblock alst blst cdnum clformat clst config dir diris dlst drarec inpt inptis isaorb linecode obtstr pt putpt ss ssgetpy swedfile swedpath wedsum weldsort)
    3. (vl-load-com)
    4. ;;说明:生成或修改配置文件
    5. (defun config(/ ab abwedtpy cd cdwedtpy file filepath tn tnum)
    6. (if (setq filepath (findfile "swedconfig.txt"))
    7. (progn
    8. (mapcar (function (lambda(x y) (set (read x) y))) (list "abwedtpy" "cdwedtpy" "tnum") (read (read-line (setq file (open filepath "r")))))
    9. (close file)
    10. )
    11. (setq filepath (strcat (vla-get-Path (vlax-get-acad-object)) "\\Support\\swedconfig.txt") abwedtpy "100%RT" cdwedtpy "100%PT" tnum 30)
    12. )
    13. (write-line
    14. (vl-prin1-to-string
    15. (list
    16. (if (and (/= nil (setq ab (getstring (strcat "\n请输入对接焊缝检测类型,默认<" abwedtpy ">:")))) (/= "" ab)) ab abwedtpy)
    17. (if (and (/= nil (setq cd (getstring (strcat "\n请输入C、D类焊缝检测类型,默认<" cdwedtpy ">:")))) (/= "" cd)) cd cdwedtpy)
    18. (if (and (/= nil (setq tn (getint (strcat "\n请输入当前管线总页数,默认<" (rtos tnum) ">:")))) (/= "" tn)) tn tnum)
    19. )
    20. )
    21. (setq file (open filepath "w"))
    22. )
    23. (close file)
    24. (prin1)
    25. )
    26. (princ "\n确认配置无误后,再进行下一步操作!!!")
    27. (if (setq swedpath (findfile "swedconfig.txt"))
    28. (progn
    29. (progn;;;自定义函数!
    30. ;;说明:获取文字或快属性文字
    31. ;;返回:字符串(obtstr);;(SETQ pikstr "\n请拾取原图当前页号:")
    32. (defun obtstr(pikstr / edata ent etype pt str tpy)
    33. (if (and (/= (setq ent (entsel pikstr)) "") (/= ent nil))
    34. (progn
    35. (while (and (/= (setq tpy (cdr (assoc 0 (entget (car ent))))) "MTEXT") (/= tpy "TEXT") (/= tpy "INSERT")) (setq ent (entsel "\n选择不为文字或块内文字、块属性,请重新选择择提取的对象:")))
    36. (if (= tpy "INSERT")
    37. (while (and (/= (setq tpy (cdr (assoc 0 (entget (car (nentselp (cadr ent))))))) "ATTRIB") (/= tpy "MTEXT") (/= tpy "TEXT") (/= tpy "INSERT"))
    38. (setq ent (entsel "\n选择不为文字或块内文字、块属性,请重新选择择提取的对象:"))
    39. )
    40. )
    41. (setq edata (entget (car ent)) pt (cadr ent) etype (cdr (assoc 0 edata)))
    42. (cond
    43. ((or (= etype "TEXT") (= etype "MTEXT")) (setq str (clformat (cdr (assoc 1 edata)))))
    44. ((= etype "INSERT") (setq str (clformat (cdr (assoc 1 (entget (car (nentselp pt))))))))
    45. )
    46. )
    47. )
    48. str
    49. )
    50. (defun ssgetpy(ssall weldtpy)
    51. (vl-cmdf "SELECT" ssall "")
    52. (ssget "P" (list (cons 1 weldtpy)))
    53. )
    54. (defun drarec(lst)
    55. (entmakex (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 62 1) (cons 90 (length lst)) (cons 70 1)) (mapcar '(lambda (pt) (cons 10 pt)) lst)))
    56. )
    57. ;;说明:生成焊缝汇总
    58. ;;参数:wedlst:焊缝类表
    59. ;;参数:pt:汇总放置区左上角点
    60. (defun wedSum(weldlst pt isdir isinpt lcode / center1 center2 disc1x disc1y disc2x disc2y disex disey dissx dissy hdisx hdisy n pt0 pte pts wedlst)
    61. (setq
    62. pt0 (if isdir
    63. (cond
    64. ((equal isinpt "LD") (list (car pt) (+ (cadr pt) 22)))
    65. ((equal isinpt "RT") (list (- (car pt) 44) (cadr pt)))
    66. ((equal isinpt "RD") (list (- (car pt) 44) (+ (cadr pt) 22)))
    67. (T pt)
    68. )
    69. (cond
    70. ((equal isinpt "LD") (list (car pt) (+ (cadr pt) 103)))
    71. ((equal isinpt "RT") (list (- (car pt) 22) (cadr pt)))
    72. ((equal isinpt "RD") (list (- (car pt) 22) (+ (cadr pt) 103)))
    73. (T pt)
    74. )
    75. )
    76. hdisx 22 hdisy 22 n 1
    77. );(setq n (1+ n))
    78. (repeat 6
    79. (if (<= n 2)
    80. (progn
    81. (drarec (list pt0 (list (+ (car pt0) hdisx) (cadr pt0)) (list (+ (car pt0) hdisx) (- (cadr pt0) hdisy)) (list (car pt0) (- (cadr pt0) hdisy))))
    82. (entmake
    83. (append
    84. (list '(0 . "MTEXT") '(100 . "AcDbEntity") '(100 . "AcDbMText") (cons 10 (list (+ (car pt0) 11) (- (cadr pt0) 11))) '(41 . 22) '(46 . 22) '(71 . 5) '(72 . 5))
    85. (cond
    86. ((= n 1) (list (cons 1 "{\\fSimSun|b0|i0|c134|p2;\\W0.8;管线代\\P用编码}") '(7 . "Standard") '(40 . 4.5) '(62 . 1)))
    87. ((= n 2) (list (cons 1 (strcat "{\\fSimSun|b1|i1|c134|p2;" lcode "}")) '(7 . "宋体") '(40 . 8.0)))
    88. )
    89. )
    90. )
    91. (if (= n 2)
    92. (if isdir
    93. (cond
    94. ((equal isinpt "LD") (setq pt0 (list (+ (car pt0) 22) (cadr pt0))))
    95. ((equal isinpt "RT") (setq pt0 (list (- (car pt) 103) (cadr pt))))
    96. ((equal isinpt "RD") (setq pt0 (list (- (car pt) 103) (+ (cadr pt) 22))))
    97. (T (setq pt0 (list (+ (car pt0) hdisx) (cadr pt0))))
    98. )
    99. (cond
    100. ((equal isinpt "LD") (setq pt0 (list (car pt) (+ (cadr pt) 59))))
    101. ((equal isinpt "RT") (setq pt0 (list (car pt0) (- (cadr pt0) hdisy))))
    102. ((equal isinpt "RD") (setq pt0 (list (- (car pt) 22) (+ (cadr pt) 59))))
    103. (T (setq pt0 (list (car pt0) (- (cadr pt0) hdisy))))
    104. )
    105. )
    106. (if isdir
    107. (setq pt0 (list (+ (car pt0) hdisx) (cadr pt0)))
    108. (setq pt0 (list (car pt0) (- (cadr pt0) hdisy)))
    109. )
    110. )
    111. );;(SETQ pt0 (GETPOINT))
    112. (progn
    113. (if isdir
    114. (setq hdisx 29.5 hdisy 11 disc1x 6.75 disc1y -5.5 dissx 5.5 dissy 0 disex 5 disey 0 disc2x 5.5 disc2y 0
    115. pt0 (if (= n 5) (list (- (car pt0) hdisx hdisx) (- (cadr pt0) hdisy)) pt0)
    116. )
    117. (setq hdisx 11 hdisy 29.5 disc1x 5.5 disc1y -6.75 dissx 0 dissy -5.5 disex 0 disey -5 disc2x 0 disc2y -5.5
    118. pt0 (if (= n 5) (list (- (car pt0) hdisx hdisx) (- (cadr pt0) hdisy)) pt0)
    119. )
    120. )
    121. (drarec (list pt0 (list (+ (car pt0) hdisx) (cadr pt0)) (list (+ (car pt0) hdisx) (- (cadr pt0) hdisy)) (list (car pt0) (- (cadr pt0) hdisy))))
    122. (if (setq wedlst (nth (- n 3) weldlst))
    123. (progn
    124. (setq
    125. center1 (list (+ (car pt0) disc1x) (+ (cadr pt0) disc1y))
    126. pts (list (+ (car center1) dissx) (+ (cadr center1) dissy))
    127. pte (list (+ (car pts) disex) (+ (cadr pts) disey))
    128. center2 (list (+ (car pte) disc2x) (+ (cadr pte) disc2y))
    129. )
    130. (entmake (list '(0 . "circle") (cons 10 center1) '(40 . 4.5) '(8 . "0") '(62 . 1)))
    131. (entmake (list '(0 . "MTEXT") '(100 . "AcDbEntity") '(100 . "AcDbMText") (cons 1 (car wedlst)) '(7 . "宋 宽0.7 高3") (cons 10 center1) '(40 . 4.5) '(8 . "0") '(40 . 4.0) '(41 . 12.0) '(71 . 5) '(72 . 5)))
    132. (if (> (length wedlst) 1)
    133. (progn
    134. (entmake (list '(0 . "LINE") (cons 10 pts) (cons 11 pte) '(62 . 1)))
    135. (entmake (list '(0 . "circle") (cons 10 center2) '(40 . 4.5) '(8 . "0") '(62 . 1)))
    136. (entmake (list '(0 . "MTEXT") '(100 . "AcDbEntity") '(100 . "AcDbMText") (cons 1 (last wedlst)) '(7 . "宋 宽0.7 高3") (cons 10 center2) '(40 . 4.5) '(8 . "0") '(40 . 4.0) '(41 . 12.0) '(71 . 5) '(72 . 5)))
    137. )
    138. )
    139. )
    140. )
    141. (setq pt0 (list (+ (car pt0) hdisx) (cadr pt0)))
    142. )
    143. )
    144. (setq n (1+ n))
    145. )
    146. )
    147. ;;说明:插入焊缝无损检测记录卡
    148. ;;参数:abn:AB焊缝个数
    149. ;;参数:abwedtpy:AB类检测类型
    150. ;;参数:cdn:CD焊缝个数
    151. ;;参数:cdwedtpy:CD类检测类型
    152. ;;参数:rown:每列最大个数
    153. ;;参数:discol:列间距
    154. ;;参数:pt:记录卡插入点(x , y+50)
    155. ;;参数:pagstr:当前页码-正整型
    156. ;;参数:tostr:共多少页-正整型
    157. ;;参数:lcstr:管线代用编码-正整型
    158. ;;参数:pnstr:产品编号
    159. ;;参数:lnmstr:管线号
    160. ;;参数:lnstr:管线名称
    161. (defun al-insertblock(abn abwedtpy cdn cdwedtpy rown discol pt pagstr tostr lcstr pnstr lnmstr lnstr / bf-list-exist blk col count exlst gettableitems i makewedtest mspace n page pts0 str tpt znum)
    162. (setq
    163. count (+ (if abwedtpy abn 0) (if cdwedtpy cdn 0))
    164. page (cond
    165. ((< 0 count 47) 1)
    166. ((> count 46) (+ 2 (fix (/ (- count 46) 46.0))))
    167. (t 0)
    168. ) ;;计算页数
    169. );; tpt (list (+ (car pts0) 7.5) (cadr pts0))
    170. ;;说明:获取检索符号表所有子项名
    171. ;;参数:table:索符号表名
    172. ;;返回:子项名表
    173. (defun gettableitems(table / a b)
    174. (while (setq a (tblnext table (null a)))
    175. (if (not (or (wcmatch (cdr (assoc 2 a)) "`**,*|*") (and (= "layer" (strcase table t)) (= 4 (logand 4 (cdr (assoc 70 a)))))))
    176. (setq b (cons (cdr (assoc 2 a)) b))
    177. )
    178. )
    179. (acad_strlsort b)
    180. )
    181. ;;;name:BF-list-exist
    182. ;;;desc:判断item是否在列表内,
    183. ;;;arg:lst:列表,任意嵌套表
    184. ;;;arg:item:被检查的元素
    185. ;;;return:存在t,反之nil
    186. ;;;example:(BF-list-exist '(1 2 3 4) 3)
    187. (defun BF-list-exist (lst item)
    188. (apply
    189. 'or
    190. (cons
    191. (vl-position item lst)
    192. (mapcar '(lambda (x) (BF-list-exist x item))
    193. (vl-remove-if 'atom lst)
    194. )
    195. )
    196. )
    197. )
    198. ;;说明:创建焊缝检测文字
    199. ;;参数:wedtype:焊缝检测类型
    200. ;;参数:tpt:起始插入点
    201. (defun makewedtest(wedtype tpt cnum)
    202. (if wedtype
    203. (progn
    204. (entmake (list '(0 . "TEXT") (cons 1 wedtype) '(7 . "宋体") (cons 10 tpt) (cons 11 tpt) '(40 . 3.0) (cons 62 cnum) '(71 . 0) '(72 . 1) '(73 . 2)))
    205. (entmake (list '(0 . "TEXT") (cons 1 "固口") '(7 . "宋体") (cons 10 (list (+ (car tpt) 24) (cadr tpt))) (cons 11 (list (+ (car tpt) 24) (cadr tpt))) '(40 . 3.0) (cons 62 cnum) '(71 . 0) '(72 . 1) '(73 . 2)))
    206. (entmake (list '(0 . "TEXT") (cons 1 "转口") '(7 . "宋体") (cons 10 (list (+ (car tpt) 34) (cadr tpt))) (cons 11 (list (+ (car tpt) 34) (cadr tpt))) '(40 . 3.0) (cons 62 cnum) '(71 . 0) '(72 . 1) '(73 . 2)))
    207. )
    208. )
    209. )
    210. (if (> page 0)
    211. (if (and (BF-list-exist (gettableitems "block") "RecordCard") (BF-list-exist (gettableitems "block") "RecordCardSub"))
    212. (progn
    213. (setq n 0 str "")
    214. (while (<= (setq n (1+ n)) page)
    215. (if (and pt (set (read (strcat "pts" (rtos n))) (list (+ (car pt) (* (1- n) 260)) (- (cadr pt) 50))));;;(getpoint (strcat "\n请拾取【第" (rtos n) "页】无损检测记录中第一行无损检测方法的左上角点:"))
    216. (progn
    217. (setq mspace (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
    218. (setq blk (vla-InsertBlock mspace (vlax-3D-point (eval (read (strcat "pts" (rtos n))))) "RecordCard" 1 1 1 0))
    219. (setq exlst (vlax-safearray->list (vlax-variant-value (vla-Explode blk))))
    220. (vla-Delete blk)
    221. (if (and (equal (vla-get-ObjectName (car exlst)) "AcDbBlockReference") (equal (vla-get-Name (car exlst) ) "RecordCardSub"))
    222. (setq blk (car exlst))
    223. (setq blk (cadr exlst))
    224. )
    225. (setq x (nth 2 (vlax-SafeArray->list (vlax-Variant-Value (vla-GetAttributes blk)))))
    226. (foreach x (vlax-SafeArray->list (vlax-Variant-Value (vla-GetAttributes blk)));属性集合
    227. (cond;;("TOTAL" "PAGE" "LINECODE" "LINENAME" "LINENO." "PRONO.")
    228. ((equal (strcase (vla-Get-TagString x)) "PAGE") (vla-put-TextString x (if (= nil pagstr) "" (strcat (rtos pagstr) "-" (rtos n)))));;第几页
    229. ((equal (strcase (vla-Get-TagString x)) "TOTAL") (vla-put-TextString x (if (= nil tostr) "" (rtos tostr))));;共几页
    230. ((equal (strcase (vla-Get-TagString x)) "LINECODE") (vla-put-TextString x (if (= nil lcstr) "" (rtos lcstr))));;管线代用编码
    231. ((equal (strcase (vla-Get-TagString x)) "PRONO.") (vla-put-TextString x (if (= nil pnstr) "" pnstr)));;产品编号
    232. ((equal (strcase (vla-Get-TagString x)) "LINENO.") (vla-put-TextString x (if (= nil lnmstr) "" lnmstr)));;管线号
    233. ((equal (strcase (vla-Get-TagString x)) "LINENAME") (vla-put-TextString x (if (= nil lnstr) "" lnstr)));;管线名称
    234. )
    235. )
    236. (setq
    237. pts0 (list (+ (car (eval (read (strcat "pts" (rtos n))))) 41) (- (cadr (eval (read (strcat "pts" (rtos n))))) 109))
    238. i 0 znum (* rown 2)
    239. );;(makewedtxt abnum "100%RT" cdnum "100%PT" 26 97.5 23 99.5)
    240. (while (and (<= (setq i (1+ i)) (- count 46 (* (- n 2) znum))) (<= i znum))
    241. (if (> (fix (/ i (1+ rown))) 0) (setq col 1) (setq col 0))
    242. (setq tpt (list (+ (car pts0) 7.5 (* col discol)) (+ (- (cadr pts0) (+ (* (- i 1) 7) 3.5)) (* col rown 7))))
    243. (if (<= (+ i 46 (* (- n 2) 46)) abn)
    244. (makewedtest abwedtpy tpt 40)
    245. (makewedtest cdwedtpy tpt 4)
    246. )
    247. )
    248. )
    249. )
    250. )
    251. (setq n 0)
    252. (while (<= (setq n (1+ n)) page) (set (read (strcat "pts" (rtos n))) nil))
    253. )
    254. )
    255. )
    256. (prin1)
    257. )
    258. ;;说明:清除多行文字格式
    259. ;;参数:str:需要清除格式的字符串
    260. ;;返回:清除格式后的字符串
    261. (defun clformat(str / regex);;自制
    262. (setq regex (vlax-create-object "Vbscript.RegExp")) ;引用正则表达式控件
    263. (if regex
    264. (progn
    265. (vlax-put-property regex "IgnoreCase" 0) ;不忽略大小写
    266. (vlax-put-property regex "Global" 1) ;匹配方式,全文字匹配
    267. (foreach x
    268. (list
    269. (list "\\\\\\\\" (chr 1));替换\\字符
    270. (list "\\\\{" (chr 2));替换\{字符
    271. (list "\\\\}" (chr 1));替换\}字符
    272. (list "\\\\pi(.[^;]*);" "");删除段落缩进格式
    273. (list "\\\\pt(.[^;]*);" "");删除制表符格式
    274. (list "\\\\S(.[^;]*)(\\^|#|\\\\)(.[^;]*);" "");删除堆迭格式
    275. (list "(\\\\F|\\\\f|\\\\C|\\\\H|\\\\\T|\\\\Q|\\\\W|\\\\A)(.[^;]*);" "");删除字体、颜色、字高、字距、倾斜、字宽、对齐格式
    276. (list "(\\\\L|\\\\O|\\\\l|\\\\o)" "");删除下划线、删除线格式
    277. (list "\\\\~" "");删除不间断空格格式
    278. (list "\\\\P" "\r\n");删除换行符格式
    279. (list "({|})" "");删除{}
    280. (list "\\\\pql;" "");删除\pql;
    281. (list "\\\\pqc;" "");删除\pqc;
    282. (list "\\\\pqr;" "");删除\pqr;
    283. (list "\\\\pxqc;" "");删除\pxqc;
    284. (list "\\x01" "\\");替换回\\,\{,\}字符
    285. (list "\\x02" "{");替换回\\,\{,\}字符
    286. (list "\\x03" "}");替换回\\,\{,\}字符
    287. )
    288. (vlax-put-property regex "Pattern" (car x))
    289. (setq str (vlax-invoke-method regex "Replace" str (cadr x)))
    290. )
    291. )
    292. )
    293. str
    294. )
    295. ;;说明:焊缝排序
    296. ;;参数:weldss:焊缝选择集
    297. ;;返回:排序后的表
    298. (defun weldsort(weldss / bf-enamep bf-pickset->list getentstr)
    299. ;;;name:BF-enamep
    300. ;;;desc:判断是否图元?
    301. ;;;arg:arg:图元名
    302. ;;;return:图元名为t,其他为nil
    303. ;;;example:(BF-enamep obj)
    304. (defun BF-enamep (arg) (equal (type arg) 'ename))
    305. ;;;name:BF-pickset->list
    306. ;;;desc:选择集->图元列表
    307. ;;;arg:SS:选择集
    308. ;;;return:图元列表
    309. ;;;example:(BF-pickset->list (ssget))
    310. (defun BF-pickset->list (ssf)
    311. (vl-remove-if-not 'BF-enamep (mapcar 'cadr (ssnamex ssf)))
    312. )
    313. (defun getentstr(entlst / strlst wdstr)
    314. (setq strlst nil)
    315. (if entlst
    316. (foreach x (BF-pickset->list entlst) (if (not (vl-position (setq wdstr (clformat (cdr (assoc 1 (entget x))))) strlst)) (setq strlst (cons wdstr strlst))))
    317. )
    318. (reverse strlst)
    319. )
    320. (if weldss (vl-sort (getentstr weldss) (function (lambda(x y) (< (atoi (substr x 2)) (atoi (substr y 2)))))))
    321. ))
    322. (if (setq ss (ssget '((0 . "*TEXT") (1 . "A*,B*,C*,D*") (7 . "宋 宽0.7 高3,宋 宽0.75 高3"))))
    323. (progn
    324. (setq
    325. alst (weldsort (ssgetpy ss "A*"))
    326. blst (weldsort (ssgetpy ss "B*"))
    327. clst (weldsort (ssgetpy ss "C*"))
    328. dlst (weldsort (ssgetpy ss "D*"))
    329. abnum (+
    330. (if (> (length alst) 1)
    331. (+ (- (atoi (substr (last alst) 2)) (atoi (substr (car alst) 2))) 1)
    332. (length alst)
    333. )
    334. (if (> (length blst) 1)
    335. (+ (- (atoi (substr (last blst) 2)) (atoi (substr (car blst) 2))) 1)
    336. (length blst)
    337. )
    338. )
    339. cdnum (+
    340. (if (> (length clst) 1)
    341. (+ (- (atoi (substr (last clst) 2)) (atoi (substr (car clst) 2))) 1)
    342. (length clst)
    343. )
    344. (if (> (length dlst) 1)
    345. (+ (- (atoi (substr (last dlst) 2)) (atoi (substr (car dlst) 2))) 1)
    346. (length dlst)
    347. )
    348. )
    349. isaorb nil
    350. dir "横向"
    351. diris T
    352. inpt "右上"
    353. inptis "RT"
    354. )
    355. (initget "Q q A a W w S s E e D d")
    356. (setq putpt (getpoint (strcat "\n请选择[方向变换(Q)/修改配置(A)/左上插入点(W)/左下插入点(S)/右上插入点(E)/右下插入点(D)]当前【" dir "-" inpt "】:")))
    357. (while (= 'str (type putpt))
    358. (setq putpt (strcase putpt))
    359. (cond
    360. ((equal putpt "Q") (if diris (setq dir "竖向" diris nil) (setq dir "横向" diris T)))
    361. ((equal putpt "A") (config))
    362. ((equal putpt "W") (setq inpt "左上" inptis "LT"))
    363. ((equal putpt "S") (setq inpt "左下" inptis "LD"))
    364. ((equal putpt "E") (setq inpt "右上" inptis "RT"))
    365. ((equal putpt "D") (setq inpt "右下" inptis "RD"))
    366. )
    367. (initget "Q q A a W w S s E e D d")
    368. (setq putpt (getpoint (strcat "\n请选择[方向变换(Q)/修改配置(A)/左上插入点(W)/左下插入点(S)/右上插入点(E)/右下插入点(D)]当前【" dir "-" inpt "】:")))
    369. )
    370. (if (= 'list (type putpt))
    371. (wedSum (list alst blst clst dlst) putpt diris inptis (rtos (setq LineCode (getint "\n请输入管线代用编码:"))))
    372. )
    373. (if (setq pt (getpoint "\n请拾取记录卡距离左上角上方距离50的点:"))
    374. (progn
    375. (if (setq swedpath (findfile "swedconfig.txt"))
    376. (progn
    377. (mapcar (function (lambda(x y) (set (read x) y))) (list "abwedtpy" "cdwedtpy" "tnum") (read (read-line (setq swedfile (open swedpath "r")))))
    378. (close swedfile)
    379. ;;abwedtpy cdn cdwedtpy rown discol pt pagstr tostr
    380. (al-insertblock abnum abwedtpy cdnum cdwedtpy 23 99.5 pt (getint "\n请输入当前页号:") tnum LineCode "" (obtstr "\n请拾取原图【管线号】:") (obtstr "\n请拾取原图【管线名称】:"))
    381. ;(setq
    382. ; abn abnum
    383. ; abwedtpy abwedtpy
    384. ; cdn cdnum
    385. ; cdwedtpy cdwedtpy
    386. ; rown 23
    387. ; discol 99.5
    388. ; pt pt
    389. ; pagstr (getint "\n请输入当前页号:")
    390. ; tostr tnum
    391. ; lcstr LineCode
    392. ; pnstr ""
    393. ; lnmstr (getstring "\n请输入管线号:")
    394. ; lnstr (getstring "\n请输入管线名称:")
    395. ;)
    396. )
    397. )
    398. )
    399. )
    400. )
    401. )
    402. (princ (strcat "\nA类焊缝有:" (if (> (length alst) 1) (rtos (+ (- (atoi (substr (last alst) 2)) (atoi (substr (car alst) 2))) 1)) (rtos (length alst))) "个;B类焊缝有:" (if (> (length blst) 1) (rtos (+ (- (atoi (substr (last blst) 2)) (atoi (substr (car blst) 2))) 1)) (rtos (length blst))) "个;\nC类焊缝有:" (if (> (length clst) 1) (rtos (+ (- (atoi (substr (last clst) 2)) (atoi (substr (car clst) 2))) 1)) (rtos (length clst))) "个;D类焊缝有:" (if (> (length dlst) 1) (rtos (+ (- (atoi (substr (last dlst) 2)) (atoi (substr (car dlst) 2))) 1)) (rtos (length dlst))) "个!\n共计:" (rtos (+ abnum cdnum)) "个!"))
    403. )
    404. (progn
    405. (alert "\n未找到配置文件,请依次输入以下参数进行配置!!!")
    406. (config)
    407. )
    408. )
    409. (prin1)
    410. )