dcl1214 发表于 2012-4-14 23:15:28

代码无法对齐

这个代码在执行的时候无法对齐,当用户选择非自定义的时候,选择行数为1的状态下生成的图形无法对齐
望高手出山解决
谢谢!!!

langjs 发表于 2012-4-14 23:30:35

这个程序都是基础的自己看看书,改一改不是更好么?又学了知识又改了程序

zhuquanmao 发表于 2012-4-14 23:38:41

;;;实例(此函数适用于字串中无空格的现象)引用明镜的程序
                                        ;(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" "" "")
)

dcl1214 发表于 2012-4-14 23:44:56

还是不行哦,大哥

dcl1214 发表于 2012-4-15 15:51:31

问题已经解决
页: [1]
查看完整版本: 代码无法对齐