找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 553|回复: 2

[分享]:这是一个利用数据库作图的程序

[复制链接]
发表于 2004-9-15 19:55:46 | 显示全部楼层 |阅读模式

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

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

×
我编写的一个从数据文件读取数据插入到当前图形的程序

特拿出来和大家分享希望能有人用的上

[php]
;;;--------------------------------------------------------------------
;;;                本程序为操作数据的一个程序
;;;                数据文件的名称为:kjkg.ini
;;;--------------------------------------------------------------------
;;;                数据文件的结构以组码形式保存
;;;                -1            开关的型号
;;;                40            半径
;;;                72            圆孔数量
;;;                73            方孔数量
;;;                100…         为圆孔的中心点
;;;                201…         为方孔的中心点
;;;                211、213…    为方孔的宽度
;;;                212、214…    为方孔的高度
;;;--------------------------------------------------------------------
(defun c:kjkg ()
  (setq os (getvar "osmode"))
  (setvar "cmdecho" 0)
  (setq kg_name (getstring "\n框架式开关型号:"))
  (setq kg_cl (getpoint "\n请指定插入点:"))
  (setvar "osmode" 0)
  (if (setq kg_sj (open "j:/CAD/程序文件/KJKG.ini" "r"))
;在这里你需要把文件路径改为你把数据文件所存储的路径
  (progn
      (setq kg_lista (read-line kg_sj))
      (while kg_lista
        (progn
          (setq kg_list (read kg_lista))
          (if (= kg_name (cdr (assoc -1 kg_list)))
            (progn
              (if (cdr (assoc 72 kg_list))
                (hzcircle kg_list)
              )
              (if (cdr (assoc 73 kg_list))
                (hzfangkong kg_list)
              )
              (close kg_sj)
              (setvar "osmode" os)
              (quit)
            )
          )
          (if (= nil (setq kg_lista (read-line kg_sj)))
            (progn
              (alert "数据文件中无此开关数据")
              (close kg_sj)
              (setvar "osmode" os)
              (quit)
            )
          )
        )
      )
    )
    (alert "未找到数据文件:KJKG.ini")
  )
  (setvar "osmode" os)                        ;恢复捕捉
)
(prin1)


(defun hzcircle        (lista)
  (setq        c_r   (cdr (assoc 40 lista))
        c_s   (cdr (assoc 72 lista))
        c_100 100
  )
  (while (> C_S 0)
    (setq c_point (cdr (assoc c_100 lista)))
    (command "circle" (mapcar '+ c_point kg_cl) c_r) ;mapcar
    (setq c_s        (1- c_s)
          c_100        (1+ c_100)
    )
  )
)


(defun hzfangkong (lista)
  (setq        fk_s   (cdr (assoc 73 lista))
        fk_200 201
        fk_w   211
        fk_h   212
  )
  (while (> fk_s 0)
    (setq fk_point   (cdr (assoc fk_200 lista))
          fk_ww             (cdr (assoc fk_w lista))
          fk_hh             (cdr (assoc fk_h lista))
          fk_point_a (mapcar '+ fk_point kg_cl)
    )
    (fk fk_point_a fk_ww fk_hh)
    (setq fk_s         (1- fk_s)
          fk_200 (1+ fk_200)
          fk_w         (+ fk_w 2)
          fk_h         (+ fk_h 2)
    )
  )
)

;;;
(defun fk (fk0 ww hh /)
  (setq fk11 (polar fk0 pi (/ ww 2.0)))
  (setq fk1 (polar fk11 (* pi 1.5) (/ hh 2.0)))
  (setq fk21 (polar fk0 0 (/ ww 2.0)))
  (setq fk2 (polar fk21 (/ pi 2) (/ hh 2.0)))
  (command "rectangle" "f" 0 fk1 fk2)
)
[/php]

下面是数据文件的一个例子里面是一些开关的数据

把它复制后保存在你的硬盘中名称为kjkg.ini

((-1 . "cw1-2000") (40 . 3) (72 . 11) (73 . 2) (100 175.0 52.0) (101 175.0 198.5) (102 175.0 351.0) (103 0.0 351.0) (104 -175.0 351.0) (105 -175.0 198.5) (106 -175.0 52.0) (107 -175.0 -17.0) (108 0.0 -17.0) (109 175.0 -17.0) (110 0.0 54.7) (201 0.0 24.0) (211 . 258)  (212 . 48) (202 0.0 199.5) (213 . 312)  (214 . 269))
((-1 . "cw1-2000g") (40 . 3) (72 . 8) (73 . 1) (100 175.0 10.0) (101 175.0 143.5) (102 175.0 314.0) (103 0.0 314.0) (104 -175.0 314.0) (105 -175.0 143.5) (106 -175.0 10.0) (107 0.0 10.0) (201 0.0 162.0) (211 . 312) (212 . 268))
((-1 . "cw1-3200") (40 . 3) (72 . 11) (73 . 2) (100 183.0 50.5) (101 183.0 198.5) (102 183.0 352.0) (103 0.0 352.0) (104 -183.0 352.0) (105 -183.0 198.5) (106 -183.0 50.5) (107 -183.0 -19.0) (108 0.0 -19.0) (109 183.0 -19.0) (110 0.0 54.7) (201 0.0 24.0) (211 . 312)  (212 . 48) (202 0.0 200.0) (213 . 328)  (214 . 270))
((-1 . "cw1-3200g") (40 . 3) (72 . 8) (73 . 1) (100 183.0 13.5) (101 183.0 161.5) (102 183.0 315.0) (103 0.0 315.0) (104 -183.0 315.0) (105 -183.0 161.5) (106 -183.0 13.5) (107 0.0 17.7) (201 0.0 163.0) (211 . 328) (212 . 270))
((-1 . "mt06n") (73 . 1) (201 29.5 143.7) (211 . 307) (212 . 303))
((-1 . "mt08h") (73 . 1) (201 0.0 168.0) (211 . 364) (212 . 379))

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1个

财富等级: 恭喜发财

发表于 2004-9-16 12:17:49 | 显示全部楼层
这个应该不能叫‘数据库’吧,最多只能算是数据文件。
数据库看看这个:

[iframe h=600]http://www.digitalgx.com/Information/article/gis/art_gis42.htm[/iframe]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-9-16 13:19:15 | 显示全部楼层
谢谢斑竹的指导

现在我可能对某些概念有些混淆以后会改进的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-27 12:00 , Processed in 0.194554 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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