(defun c:Test (/ ss i sn vl p lst bks s d at l a f o)
;; Author : Tharwat Al Shoufi ;;
;; Date : 08. Feb. 2014 ;;
(princ
"\n Select Dimensions with Attributed Block < Buble > "
)
(if (setq ss (ssget '((-4 . "<OR")
(0 . "DIMENSION")
(-4 . "<AND")
(0 . "INSERT")
(2 . "Buble")
(-4 . "AND>")
(-4 . "OR>")
)
)
)
(repeat (setq i (sslength ss))
(setq sn (ssname ss (setq i (1- i)))
vl (vlax-ename->vla-object sn)
)
(if (eq (cdr (assoc 0 (entget sn))) "DIMENSION")
(progn
(if (/= (vla-get-Arrowhead1Block vl)
"None"
)
(setq p (cdr (assoc 13 (entget sn))))
(setq p (cdr (assoc 14 (entget sn))))
)
(setq
lst
(cons (list p
(rtos (cdr (assoc 42 (entget sn))) 2 0)
)
lst
)
)
)
(setq bks (cons (list (cdr (assoc 10 (entget sn))) vl) bks))
)
)
)
(foreach x lst
(if (and (car x) (car bks))
(progn
(setq d(distance (car x) (caar bks))
at (cadr (car bks))
)
(foreach e bks
(if (< (setq a (distance (car x) (car e))) d)
(setq da
at (cadr e)
)
)
)
)
)
(if bks
(setq l
(cons
(append
(mapcar '(lambda (u)
(list (vla-get-tagstring u) (vla-get-textstring u))
)
(vlax-invoke at 'getattributes)
)
(list
(cadr x)
)
)
l
)
)
)
(setq lst (cdr lst))
)
(if l
(progn
(setq l (vl-sort l
'(lambda (j k)
(< (atof (cadr (car j)))
(atof (cadr (car k)))
)
)
)
)
(if (and (setq f
(strcat
(getvar 'DWGPREFIX)
(vl-filename-base (getvar 'DWGNAME))
".csv"
)
)
(setq o (open f "w"))
)
(progn
(setq s
(cond ((vl-registry-read
"HKEY_CURRENT_USER\\Control Panel\\International"
"sList"
)
)
(",")
)
)
(write-line
(strcat "NUMBER" s "DIMENSION" s
"HEIGHT" s "H1" s "H2"
s "H4" s "3F"
)
o
)
(foreach u l
(write-line
(strcat
(nth 1 (nth 0 u))
s
(nth 6 u)
s
(nth 1 (nth 1 u))
s
(nth 1 (nth 2 u))
s
(nth 1 (nth 3 u))
s
(nth 1 (nth 4 u))
s
(nth 1 (nth 5 u))
)
o
)
)
(close o)
(princ (strcat "\n File path : < " f " > "))
)
(alert "Unable to open or create CSV file for writing !!")
)
)
)
(princ)
)
(vl-load-com)
非常感谢塔瓦。
我有一些意见
-文件输出(*.csv)仍然分组到一列中,而不拆分其他列(B、C、D…)。
-在(D(H1)| E(H2)| F(H4)| G(3F))列中,该列中的值为数字(1,2,3….)不要(H1、H2、H3、3F…)。列的值取在H1、H2、H4、3F的数量之前(例如:H1=1H1-->获取值1;2H1-->获取值2;H4=1H4-->获取值1;3-3F-->获取值3;3F-->获取值1;…)
请帮我编辑你的Lisp程序。
非常感谢你。 虽然第一个代码在我的系统中工作,但请尝试上面修改的代码,并让我知道。
以上更新的代码
非常感谢塔瓦。
我有一些意见:
1文件输出结果拆分到其他列。但是,列中的值Ạ 如果值为2.10=2.1,16.10-->16.1,125.10-->125.1,则缺少数字0。摘要逗号后缺少数字0。
2-列(D(H1)| E(H2)| F(H4)| G(3F))中的值是数字(1,2,3….)不获取值(H1、H2、H3、3F…)。列的值取在H1、H2、H4、3F的数量之前(例如:H1=1H1-->获取值1;2H1-->获取值2;H4=获取值1;3-3F-->获取值3;3F-->获取值1;…)
零件编号:
情况2(例如:单元格A1(Excel中)=H1)相同的函数:如果(A1=“H1”,1,在Excel中为左(A1,1)。我不知道AutoLISP的性能如何。
求求你,塔瓦帮帮我!
非常感谢塔瓦。 这里一切都很顺利,你可能需要在另一台机器上试用,或者我们可能会等待这里的任何用户试用并通知我们。 希望有人会尝试的代码,让我们知道结果的excel文件(如果值在一个或单独的列)。 塔瓦特局长。
我想他们不明白我的意见。
请查看图片以区别2结果。
请帮帮我。非常感谢塔瓦。
我会考虑这个短语,因为英语不是你的母语,所以我会忽略它。
回到主题,
按Excel中的第一个单元格选择整个列A,然后右键单击->常规->数字,然后根据需要增加小数。
对我是越南人。我知道语言是我们的障碍。
请帮助我,案例2是获取列H1、H2、H4、3-3F中的值。非常感谢你!
所以请大家查看图片。
非常感谢你。
页:
1
[2]