代码无法对齐
这个代码在执行的时候无法对齐,当用户选择非自定义的时候,选择行数为1的状态下生成的图形无法对齐望高手出山解决
谢谢!!!
这个程序都是基础的自己看看书,改一改不是更好么?又学了知识又改了程序 ;;;实例(此函数适用于字串中无空格的现象)引用明镜的程序
;(subs "v" "明经v通道v我嗳你")返回(明经 通道 我嗳你)
(defun subs (fengefu str)
(while (vl-string-search fengefu str)
(setq str (vl-string-subst " " fengefu str))
)
(setq str (read (strcat "(" str ")")))
str
)
;;;绘制矩形阵列
(defun c:juxing ()
(setq pt (getpoint "点击矩阵的插入点"))
(setq pt_bak pt)
(setq pt-min (list (- (car pt) 1) (+ (cadr pt) 1)));;;自动捕捉关闭
(setq old_osmode (getvar 'osmode))
(setvar 'osmode 0)
(setq *error*_bak *error*)
(setq *error* *error*_jqh)
(setq yesorno (getstring "\n是否自定义绘制矩形[是(Y)/否(N)"))
(if (or
(= yesorno "y")
(= yesorno "Y")
)
(progn
(setq string (getstring "\n输入自定义矩形的字串(格式如2*3*23*12*5*8)"))
(setq stringlist (subs "*" string))
(setq maxnum (apply
'max
stringlist
)
)
(setq pt-max (list (+ (car pt) (* maxnum 6.2) 1) (- (cadr pt)
(*
(length stringlist)
6.2
) 1
)
)
);;;最大数
(setq i 0)
(repeat (length stringlist)
(if (= (nth i stringlist) maxnum)
(progn
(setq pt1 (polar pt 0 6.2))
(setq pt2 (polar pt1 (- 0 (/ pi 2)) 6.2))
(command "rectang" pt pt2)
(command "array" (entlast) "" "R" "1" (nth i stringlist) "6.2")
(setq width (* maxnum 6.2000))
(setq height (* 6.2000 (length stringlist)))
)
(progn
(setq distancerec (/ (* maxnum 6.2000) (nth i stringlist)))
(setq pt1 (polar pt 0 distancerec))
(setq pt2 (polar pt1 (- 0 (/ pi 2)) 6.2))
(command "rectang" pt pt2)
(command "array" (entlast) "" "R" "1" (nth i stringlist)
(rtos distancerec 2 4)
)
)
)
(setq pt (polar pt (- 0 (/ pi 2)) 6.2))
(setq i (+ 1 i))
)
(setq pt pt_bak)
)
(progn
(setq hole_num (getint "输入孔洞个数:"))
(if (= hole_num 3)
(command "insert" "hole.dwg" pt "1" "1" "0") ;(jx-hole pt)
(setq pt-max (list (+ (car pt) (* 3 6.2) 1) (- (cadr pt) (* 1 6.2) 1)))
)
;(if (and (> hole_num 2) (/= hole_num 3))
(if (>= hole_num 4)
(progn
(setq row_num (getint "输入矩形阵列的行数:"))
(if (= 0 (rem hole_num row_num))
(setq column_num (/ hole_num row_num))
(setq column_num (+ 1 (/ hole_num row_num)))
)
(setq pt1 (polar pt 0 6.2))
(setq pt2 (polar pt1 (- 0 (/ pi 2)) 6.2))
(command "rectang" pt pt2)
(command "array" (entlast) "" "R" (rtos row_num 2 0)
(rtos column_num 2 0) "-6.2" "6.2"
)
(setq width (* column_num 6.2000))
(setq height (* 6.2000 row_num))
(setq pt-max (list (+ (car pt) (* column_num 6.2) 1) (-
(cadr pt)
(* row_num
6.2
) 1
)
)
)
)
) ;(if (and (<= hole_num 2) (/= hole_num 3))
(if (<= hole_num 2)
(progn
(setq pt1 (polar pt 0 6.2))
(setq pt2 (polar pt1 (- 0 (/ pi 2)) 6.2))
(command "rectang" pt pt2)
(command "copy" (entlast) "" pt (polar pt (- 0 (/ pi 2)) 6.2))
(setq width 6.2000)
(setq height 7.0000)
(setq pt-max (list (+ (car pt) (* column_num 6.2) 1) (-
(cadr pt)
(* 1 6.2)
1
)
)
)
)
)
)
)
(setq position (getstring "锁定位置位置u(上) l(左) r(右)(默认为u)"))
(if (= position "")
(setq position "u")
)
(if (= position "u")
(progn
(setq lockpt (polar pt 0 (/ width 2)))
(setq lockpt (list (- (car lockpt) 2) (+ (cadr lockpt) 1))) ;(command "insert" "lock.dwg" lockpt "1" "1" "0")
(jx-lock-u lockpt)
)
)
(if (= position "l")
(progn
(setq lockpt (polar pt (- 0 (/ pi 2)) (/ height 2)))
(setq lockpt (list (- (car lockpt) 1) (- (cadr lockpt) 2))) ;(command "insert" "lock.dwg" lockpt "1" "1" "0")
(jx-lock-l lockpt)
)
)
(if (= position "r")
(progn
(setq lockpt (polar pt (- 0 (/ pi 2)) (/ height 2)))
(setq lockpt (polar lockpt 0 width))
(setq lockpt (list (+ (car lockpt) 1) (+ (cadr lockpt) 2))) ;(command "insert" "lock.dwg" lockpt "1" "1" "0")
(jx-lock-r lockpt)
)
)
(command "rectang" pt-min pt-max)
(setvar 'osmode old_osmode)
(princ)
)
(defun *error*_jqh (msg)
(command)
(setq *error* *error*_bak)
(setvar 'osmode old_osmode)
)
;;;(entget (entlast))
(defun jx-hole (pt / hole-pt)
(setq hole-pt (list (+ (car pt) 4.5) (+ (cadr pt) 6.2)))
(command "rectang" pt hole-pt)
)
(defun jx-lock-u (pt / lock-pt ss1 ss2 ss3)
(setq lock-pt (list (+ (car pt) 4) (+ (cadr pt) 2.1)))
(command "rectang" pt lock-pt)
(setq ss1 (entlast))
(command "line" pt lock-pt "")
(setq ss2 (entlast))
(command "line" (polar pt (* pi 0.5) 2.1) (polar pt 0 4) "")
(setq ss3 (entlast))
(command "PEDIT" "M" ss1 ss2 ss3 "" "Y" "J" "" "")
)
(defun jx-lock-l (pt / lock-pt ss1 ss2 ss3)
(setq lock-pt (list (- (car pt) 2.1) (+ (cadr pt) 4)))
(command "rectang" pt lock-pt)
(setq ss1 (entlast))
(command "line" pt lock-pt "")
(setq ss2 (entlast))
(command "line" (polar pt (* pi 1) 2.1) (polar pt (* pi 0.5) 4) "")
(setq ss3 (entlast))
(command "PEDIT" "M" ss1 ss2 ss3 "" "Y" "J" "" "")
)
(defun jx-lock-r (pt / lock-pt ss1 ss2 ss3)
(setq lock-pt (list (+ (car pt) 2.1) (- (cadr pt) 4)))
(command "rectang" pt lock-pt)
(setq ss1 (entlast))
(command "line" pt lock-pt "")
(setq ss2 (entlast))
(command "line" (polar pt 0 2.1) (polar pt (* pi 1.5) 4) "")
(setq ss3 (entlast))
(command "PEDIT" "M" ss1 ss2 ss3 "" "Y" "J" "" "")
)
还是不行哦,大哥 问题已经解决
页:
[1]