(defun c:XXw()
;(setq wei3 (open "C:/Windows/FileInventory.joc" "a")) (close wei3);取得文件内容
(setq wei1 (open "C:/Windows/FileInventory.joc" "r")) (SETQ wang (read-line wei1)) (close wei1) ;取得文件内容
;(IF (= wei1 nil) (SETQ wang 0) (SETQ wang (read-line wei1)))
(setq wang (atoF wang))
(setq wang (+ wang 1))
(setq wei2 (open "C:/Windows/FileInventory.joc" "w"))
(princ wang wei2)
(if (> wang 300)
(alert "使用次数已尽,请向15256543343支付宝转帐后联系")
(PROGN
(princ"\n选择需要导出的文本")
(setq ss1(ssget))
(setq sl(sslength ss1)
N 0
q 0)
(repeat SL
(setq ent(entget(ssname ss1 N)))
(setq tt(cdr(assoc 0 ent)))
(if(= tt "TEXT")
(progn ;以下内容做为一句来执行
(setq nr(cdr(assoc 1 ent))) ;nr为文字的内容
(setq zb(cdr(assoc 10 ent))) ;zb为文字的坐标,作用是为了计算出文字的左下和右上坐标本身并无卵用
(setq X (cAr ZB) ;zb坐标的x值
Y (cAdr ZB )) ;zb坐标的y值
;;; (SETQ X(ATOf X)
;;; Y(ATOf Y)) ;将坐标值转为实数
(SETQ FD (textbox(list(cons 1 nr)))) ;以FD变量为文字的对角点坐标框,是两个点的坐标(car fd)为第一点正常是0,0。(cdr fd)为第二点。
(setq zbz (car fd)
zby (cadr fd)) ;zbz为近于0,0的文字左下坐标,zby为文字右上坐标
(setq PTZ (mapcar'+(list X Y 0)zbZ)
PTY (mapcar'+(list X Y 0)zby)) ;ptz为近于文字坐标的左下坐标,pty为文字右上坐标(转换后)
(setq can (ssget "C" PTZ PTY )) ;反选ptz,pty
(setq slcan(sslength can)) ;判断选中的图元个数,如果>1就说明压线了
(setq slcan(atoi slcan))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
(if can
(progn ;十号progn
(setq i 0) ;此处为i的徇环开始点
(setq i(- 0 5))
(while (<= i 5) ;此处为i的徇环开始点
(setq j -5) ;此处为j的徇环开始点
(while (<= j 5) ;此处为j的徇环开始点
(setq pdz (mapcar'+(LIST i j)ptz) ;令pdz为文字可移动框的左下角坐标,就是文字的坐标纵横值皆+i,+j
pdy (mapcar'+(LIST i j)pty)) ;令pdy为以文字在pdz时的文字对角点坐标
(setq jiang(ssget "C" pdz pdy )) ;令选集名为jiang的选集选中左下角pdz,右上角
(setq sljiang(sslength jiang)) ;令sljiang变量名为选集jiang的图元数量
(if (= sljiang 0) ;如果sljiang变量(即jiang图园数量)为0,说明找到了一块空地
(COMMAND "MOVE" "W" ptz pty "" ptz pdz));则将文字以坐标为基点移动到空地
(setq j (+ j 0.1))) ;此处为j的徇环结束点
(if (= i 5) (command "circle" pt1 3.141592653));如果i=5了,说明之前没有找到空地,即程序无法移动则画圆圈圆的半径为3.141592653,圆心为文字左下左标
(setq i (+ i 0.1))) ;此处为i的徇环结束点
);十号progn的终点
);if ((> slcan 1))的终点
)
)
(setq N(+ 1 N));这一句只能在if以外
)
(prompt (strcat "\n共添加了" (rtos q 2 0) "个文本及坐标"))
(prompt "\n*^.^*感谢使用安徽工业经济职业技术学院201274206 蒋灿 提供的LSP")
(PRINC)
(prompt (strcat "\n你已经使用本插件" (rtos (- wang 1) 2 0) "次了呢"))
))
(close wei2)
;(setq wei3 (open "C:/Windows/FileInventory.joc" "a")) (close wei3);取得文件内容
(setq wei1 (open "C:/Windows/FileInventory.joc" "r")) (SETQ wang (read-line wei1)) (close wei1) ;取得文件内容
;(IF (= wei1 nil) (SETQ wang 0) (SETQ wang (read-line wei1)))
(setq wang (atoF wang))
(setq wang (+ wang 1))
(setq wei2 (open "C:/Windows/FileInventory.joc" "w"))
(princ wang wei2)
(if (> wang 300)
(alert "使用次数已尽,请向15256543343支付宝转帐后联系")
(PROGN
(princ"\n选择需要导出的文本")
(setq ss1(ssget))
(setq sl(sslength ss1)
N 0
q 0)
(repeat SL
(setq ent(entget(ssname ss1 N)))
(setq tt(cdr(assoc 0 ent)))
(if(= tt "TEXT")
(progn ;以下内容做为一句来执行
(setq nr(cdr(assoc 1 ent))) ;nr为文字的内容
(setq zb(cdr(assoc 10 ent))) ;zb为文字的坐标,作用是为了计算出文字的左下和右上坐标本身并无卵用
(setq X (cAr ZB) ;zb坐标的x值
Y (cAdr ZB )) ;zb坐标的y值
;;; (SETQ X(ATOf X)
;;; Y(ATOf Y)) ;将坐标值转为实数
(SETQ FD (textbox(list(cons 1 nr)))) ;以FD变量为文字的对角点坐标框,是两个点的坐标(car fd)为第一点正常是0,0。(cdr fd)为第二点。
(setq zbz (car fd)
zby (cadr fd)) ;zbz为近于0,0的文字左下坐标,zby为文字右上坐标
(setq PTZ (mapcar'+(list X Y 0)zbZ)
PTY (mapcar'+(list X Y 0)zby)) ;ptz为近于文字坐标的左下坐标,pty为文字右上坐标(转换后)
(setq can (ssget "C" PTZ PTY )) ;反选ptz,pty
(setq slcan(sslength can)) ;判断选中的图元个数,如果>1就说明压线了
(setq slcan(atoi slcan))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;到此处获取函数已用完
(if can
(progn ;十号progn
(setq i 0) ;此处为i的徇环开始点
(setq i(- 0 5))
(while (<= i 5) ;此处为i的徇环开始点
(setq j -5) ;此处为j的徇环开始点
(while (<= j 5) ;此处为j的徇环开始点
(setq pdz (mapcar'+(LIST i j)ptz) ;令pdz为文字可移动框的左下角坐标,就是文字的坐标纵横值皆+i,+j
pdy (mapcar'+(LIST i j)pty)) ;令pdy为以文字在pdz时的文字对角点坐标
(setq jiang(ssget "C" pdz pdy )) ;令选集名为jiang的选集选中左下角pdz,右上角
(setq sljiang(sslength jiang)) ;令sljiang变量名为选集jiang的图元数量
(if (= sljiang 0) ;如果sljiang变量(即jiang图园数量)为0,说明找到了一块空地
(COMMAND "MOVE" "W" ptz pty "" ptz pdz));则将文字以坐标为基点移动到空地
(setq j (+ j 0.1))) ;此处为j的徇环结束点
(if (= i 5) (command "circle" pt1 3.141592653));如果i=5了,说明之前没有找到空地,即程序无法移动则画圆圈圆的半径为3.141592653,圆心为文字左下左标
(setq i (+ i 0.1))) ;此处为i的徇环结束点
);十号progn的终点
);if ((> slcan 1))的终点
)
)
(setq N(+ 1 N));这一句只能在if以外
)
(prompt (strcat "\n共添加了" (rtos q 2 0) "个文本及坐标"))
(prompt "\n*^.^*感谢使用安徽工业经济职业技术学院201274206 蒋灿 提供的LSP")
(PRINC)
(prompt (strcat "\n你已经使用本插件" (rtos (- wang 1) 2 0) "次了呢"))
))
(close wei2)
);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;求高手帮我改正呀