找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1259|回复: 0

[LISP程序]:高手帮忙啊 遇到难题了

[复制链接]
发表于 2009-6-24 17:48:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我想根据一个生成表格的lsp程序来做一个自动生成坐标方格网的程序
现在遇到一个解决不了得问题
方格网的行数和列数 不能根据计算得到 只能通过输入
哪位高手能帮我指出问题所在啊 帮忙
(vl-load-com)
(defun C:bg(/ rows colu rows1 rows2 ly lx i ii propt colu1 co coo
                dx dy dxx dyy str with ptp1 ptp2 ptp3 ptp4 os)
   (setvar "CMDECHO" 0)
   (setq lay (getvar "clayer"))
   (setq os (getvar "OSMODE"))
   (setvar "OSMODE" 0)
   (command "color" "bylayer")
   (command "layer" "m" "bg" "c" "y" "bg" "")
   (setq zxj (getpoint "\n左下角点: "))
   (setq ysj (getpoint "\n右上角点:"))
   (setq zx (cadr zxj))
   (setq zy (car  zxj))
   (setq yx (cadr ysj))
   (setq yy (car ysj))
   (setq xys (rem zx 100))
   (setq yys (rem zy 100))
   (setq nxx ( - zx xys))
   (setq nxy ( - zy yys))
   (setq sxys (rem yx 100))
   (setq syys (rem yy 100))
   (setq wsx ( - yx sxys))
   (setq wsy ( - yy syys))
   (setq pt1 (list nxx nxy))
   (setq yszj (list wsx wsy))
   (initget 7)
   (setq rows 12)  就是这里设置列数 不能通过上面两个坐标差值计算得到
   (initget 7)
   (setq colu 10) 就是这里设置行数 不能通过上面两个坐标差值计算得到
否则会出错啊
   ;nitget 7)
   (setq rows1 100)
   (initget 7)
   (setq rows2 100)
   (setq ly (+ rows1 (* rows2 (1- rows))))
   (setq lx 0)
   (setq i 1)
     (repeat colu
        ;(initget 7)
        (setq ii (itoa i))
        ;(setq propt (strcat 100))
        (setq colu1 100)
        (setq lx (+ lx colu1))
           (if (= 1 i) (setq co (list colu1))
              (progn
                 (setq coo (list colu1))
                 (setq co (append co  coo))
              )
           )
        (setq i (1+ i))
     )
      (setq ptp1 pt1)
      (setq dy (cadr pt1))
      (setq dx (car pt1))
      (setq dxx (+ dx lx))
      (setq pt2 (list dxx dy))
      (command "line" pt1 pt2 "")
      (setq dy (+ dy rows1))
      (setq pt1 (list dx dy))
      (setq pt2 (list dxx dy))
      (command "line" pt1 pt2 "")
   (repeat (1- rows)
       (setq dy (+ dy rows2))
       (setq pt1 (list dx dy))
       (setq pt2 (list dxx dy))
       (command "line" pt1 pt2 "")   
   )

       (setq dyy (- dy ly))
       (setq pt2 (list dx dyy))
       (command "line" pt1 pt2 "")
   (setq i 0)
   (repeat colu
       (setq c (nth i co))
       (setq dx (+ dx c))
       (setq pt1 (list dx dy))
       (setq pt2 (list dx dyy))
       (command "line" pt1 pt2 "")
       (setq i (1+ i))
   )
   (initget "Yes No")     
   (setq str (getkword "\n表格边框是否加粗: 不加粗:No / <加粗:Yes> "))
   (if (or (= str nil) (= (strcase str) "YES"))
      (progn
         (initget 6)
         (setq with (getreal "\n表格边框线宽<0.6>: "))
         (if (= with nil) (setq with 0.6))
         (setq dy (cadr ptp1))
         (setq dx (car ptp1))
         (setq dxx (+ dx lx))
         (setq ptp2 (list dxx dy))
         (setq dyy (+ dy ly))
         (setq ptp3 (list dxx dyy))
         (setq ptp4 (list dx dyy))
         (command "PLINE" ptp1 "w" with with ptp2 ptp3 ptp4 "c")
      )
   )
   (setvar "OSMODE" os)
   (command "layer" "s" lay "")
   (princ)(princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-25 20:24 , Processed in 0.255932 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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