找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 933|回复: 10

[编程申请]:求编一个二维数据输入接口

[复制链接]
发表于 2006-4-24 14:29:38 | 显示全部楼层 |阅读模式

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

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

×
求编一个二维数据输入接口
格式为直线  L1=X1,Y1,X2,Y2
                        L2=X1,Y2,X3,Y3
                        L.. =................
            圆为  C1=X1,Y1,R
                        C..= ..........
         圆弧为  A1=圆心,圆端点1坐标,圆端点2 ,加方向( 顺时针为N,逆时针为S)
   
文本方式 ,  扩展名为*.DAT
我的QQ是105589651
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-5-6 00:39:57 | 显示全部楼层
说明你使用意图和目的呀,看能否有更加灵活简洁的处理办法,单纯从你的.dat文件描述看,好像是手工制作的数据格式,所以要求提出你的设计意图,若为程序输出的.dat,则另当别论。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-6 16:03:22 | 显示全部楼层
输出文件格式,像图片所示
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-6 16:07:51 | 显示全部楼层
autocad 数据
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-6 16:09:28 | 显示全部楼层
像图片所示
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-6 16:14:09 | 显示全部楼层
像图片所示1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-6 16:14:45 | 显示全部楼层
像图片所示2
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-6 20:17:17 | 显示全部楼层
;;; Design BY Ayungerstudio 2006.05.07   
;;; Template: AutoCAD 2002 为浙江网友定制
;;;**************************************
;;; No.1 DWG对象输出到 *.dat  函数      
;;;**************************************
(defun C:DWGDAT(/ FLTR ss1 n i DATfile fp entName entData entType Pt0 Pt1 Pt2 R string aa cc ll)
  (setvar "cmdecho" 0)
        (GRAPHSCR)
       
  (setq FLTR '((-4 . "<OR")        
                      (0 . "ARC")
                      (0 . "CIRCLE")
                                                   (0 . "LINE")
                                                          (-4 . "OR>")
                          );end_list
        );end_seqt
        (setq ss1 (ssget FLTR))
        (if (= ss1 nil) (exit))
        (setq n (sslength ss1))
        (if (= n 0) (exit))

        (if (= #AY_DWGDATCURPATH nil) (setq #AY_DWGDATCURPATH ""))
        (setq DATFile (getfiled "输出LINE-ARC-CIRCLE对象数据到*.DAT文件" #AY_DWGDATCURPATH "DAT" 1))
        (if (= DATFile nil) (progn (princ "\n错误: 没有选取DAT文件,程序退出!") (exit)))
       
        (setq #AY_DWGDATCURPATH (strcat (vl-filename-directory DATfile) "\\"))
        (setq fp (open DATfile "W"))
        (setq oldDimZin (getvar "DIMZIN"))
        (setvar "DIMZIN" 1)
  (setq oldLupRec (getvar "LUPREC"))
  (setvar "LUPREC" 6)

        ;;output the "LINE" object information.
        (setq ll 1)
        (setq i 0)
  (while (< i n)
                (setq entName (ssname ss1 i))
                (setq entData (entget entName))
                (setq entType (cdr (assoc 0 entData)))
                (if (= entType "LINE")
                        (progn
                          (setq Pt0 (cdr (assoc 10 entData)))
                          (setq Pt1 (cdr (assoc 11 entData)))
                          (setq string1 (strcat (if (< ll 100) "L " "L") (itoa ll) "= " (rtos (car Pt0) 2) ", " (rtos (cadr Pt0) 2) ", "
                                                                                                                          (rtos (car Pt1) 2) ", " (rtos (cadr Pt1) 2)))
                          (setq ll (+ ll 1))
                          (write-line string1 fp)
                        );end_progn
                );end_if
                (setq i (+ i 1))
        );end_while

        ;;output the "CIRCLE" object information.
        (setq cc 1)
        (setq i 0)
  (while (< i n)
                (setq entName (ssname ss1 i))
                (setq entData (entget entName))
                (setq entType (cdr (assoc 0 entData)))
                (if (= entType "CIRCLE")
                        (progn
                          (setq Pt0 (cdr (assoc 10 entData)))
                          (setq R (cdr (assoc 40 entData)))
                           (setq string1 (strcat (if (< cc 100) "C " "C") (itoa cc) "= " (rtos (car Pt0) 2) ", " (rtos (cadr Pt0) 2) ", " (rtos R 2)))
                          (setq cc (+ cc 1))
                          (write-line string1 fp)
                        );end_progn
                );end_if
                (setq i (+ i 1))
        );end_while

        ;;output the "ARC" object information.
        (setq aa 1)
        (setq i 0)
  (while (< i n)
                (setq entName (ssname ss1 i))
                (setq entData (entget entName))
                (setq entType (cdr (assoc 0 entData)))
                (if (= entType "ARC")
                        (progn
                          (setq Pt0 (cdr (assoc 10 entData)))
                          (setq R (cdr (assoc 40 entData)))
                          (setq sAngle (cdr (assoc 50 entData)))
                          (setq eAngle (cdr (assoc 51 entData)))
                          (setq Pt1 (polar Pt0 sAngle R))
                          (setq Pt2 (polar Pt0 eAngle R))
                          (setq string1 (strcat (if (< aa 100) "A " "A") (itoa aa) "= " (rtos (car Pt0) 2) ", " (rtos (cadr Pt0) 2) ", "
                                                                                                                          (rtos (car Pt1) 2) ", " (rtos (cadr Pt1) 2) ", "
                                                                                                                          (rtos (car Pt2) 2) ", " (rtos (cadr Pt2) 2) ", N"))
                                (setq aa (+ aa 1))
                          (write-line string1 fp)
                        );end_progn
                );end_if
                (setq i (+ i 1))
        );end_while
       
        (close fp)
        (princ "/n LINE-ARC-CIRCLE对象输出结束!")
        (setvar "DIMZIN" oldDimZin)
  (setvar "LUPREC" oldLupRec)
        (princ)
);end_defun

;;;**********************************
;;; No.2 DAT文件输入到CAD对象  函数  
;;;**********************************
(defun C:DATDWG(/ DATfile fp xRec xRecList entType Pt1 Pt2 Pt3 R Dirct)
  (setvar "cmdecho" 0)
        (GRAPHSCR)

        (if (= #AY_DATDWGCURPATH nil) (setq #AY_DATDWGCURPATH ""))
        (setq DATFile (getfiled "打开数据*.DAT文件" #AY_DATDWGCURPATH "DAT" 8))
        (if (= DATFile nil) (progn (princ "\n错误: 没有选取DAT文件,程序退出!") (exit)))
        (if (= (findfile DATFile) nil) (progn (princ "\n错误: 该DAT文件不存在,程序退出!") (exit)))
       
        (setq #AY_DATDWGCURPATH (strcat (vl-filename-directory DATfile) "\\"))
        (setq fp (open DATFile "R"))
        (setq #AY_ErrorSnapObject (getvar "osmode"))
        (setvar "osmode" 0)
        (while (setq xRec (read-line fp))
                (while (vl-string-position (ascii ",") xRec)
                        (setq xRec (vl-string-subst " " "," xRec))
                );end_while
                (setq xRecList (read (strcat "(" xRec ")")))
               
                (setq entType (nth 0 xRecList))
                (if (= (type entType) 'SYM) (setq entType (strcat (vl-symbol-name entType))));用来改变读入的字符串不在需要文件中保存为带引号的字符。
                (if (= entType (substr entType 1 1)) (setq k 0) (setq k 1))
                (setq entType (substr entType 1 1))
                (cond
                        ((= entType "L")
                          (setq Pt1 (list (nth (- 2 k) xRecList) (nth (- 3 k) xRecList) 0.000))
                          (setq Pt2 (list (nth (- 4 k) xRecList) (nth (- 5 k) xRecList) 0.000))
                          (command "_Line" Pt1 Pt2 "")
                        );end_switch
                        ((= entType "C")
                          (setq Pt1 (list (nth (- 2 k) xRecList) (nth (- 3 k) xRecList) 0.000))
                          (setq R (nth (- 4 k) xRecList))
                          (command "_Circle" Pt1 R )
                        );end_switch
                        ((= entType "A")
                          (setq Pt1 (list (nth (- 2 k) xRecList) (nth (- 3 k) xRecList) 0.000))
                          (setq Pt2 (list (nth (- 4 k) xRecList) (nth (- 5 k) xRecList) 0.000))
                          (setq Pt3 (list (nth (- 6 k) xRecList) (nth (- 7 k) xRecList) 0.000))
                    (setq Dirct (nth (- 8 k) xRecList))
                          (if (= (type Dirct) 'SYM) (setq Dirct (strcat (vl-symbol-name Dirct))));用来改变读入的字符串不在需要文件中保存为带引号的字符串。
                          (if (= Dirct "N")
                                   (command "_Arc" "C" Pt1 Pt2 Pt3);then 顺时针.
                                  (command "_Arc" "C" Pt1 Pt3 Pt2);then 逆时针.
                          );end_if
                        );end_switch
                );end_cond
        );end_while
        (close fp)
        (command "_zoom" "E")
        (setvar "osmode" #AY_ErrorSnapObject)
        (princ (strcat "\n数据文件 " DATfile " 输入结束!"))
        (princ)
);end_defun

;;;本程序为2005-05-07修改后的最新版本,也就是你拿到的最新
;;;版,在这里更新的目的,仅为你以后使用和共享方便!
;;;             ------ By Ayungerstudio  FSDI of CRCC  Xi'AN 2006
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-7 19:12:43 | 显示全部楼层
程序输出有点错误,在不同的面上的数据转到一个面上,圆和圆弧出现了以Y轴对称了(有三个面对的,有三个面出现对称了)  直线对的,    下面是六个面的数据,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-7 19:15:33 | 显示全部楼层
下图数据转换结果
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-7 22:47:18 | 显示全部楼层
程序代码已更新,见上面代码区域。
关于你所说的三维下错误,本程没有考虑,而仅考虑了二维CAD对象的输出。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-21 13:32 , Processed in 0.298455 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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