明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2013|回复: 4

代码无法对齐

[复制链接]
发表于 2012-4-14 23:15:28 | 显示全部楼层 |阅读模式
这个代码在执行的时候无法对齐,当用户选择非自定义的时候,选择行数为1的状态下生成的图形无法对齐
望高手出山解决
谢谢!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-4-14 23:30:35 | 显示全部楼层
这个程序都是基础的自己看看书,改一改不是更好么?又学了知识又改了程序
发表于 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" "" "")
)
 楼主| 发表于 2012-4-14 23:44:56 | 显示全部楼层
还是不行哦,大哥

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2012-4-15 15:51:31 | 显示全部楼层
问题已经解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-7-22 09:02 , Processed in 0.177562 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表