明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2630|回复: 11

飞哥等大侠,想问个问题

  [复制链接]
发表于 2005-6-3 09:06:00 | 显示全部楼层 |阅读模式
如使一SPLINE上的拟合点坐标值输出,不是在CAD的文本框中显示,而是使之另存在一个记事本文件,不知能不能行,如可以的话能不能给个例子!谢了!
发表于 2005-6-3 11:10:00 | 显示全部楼层
这两个帖子结合起来,你再动动脑筋就可以了: http://bbs.mjtd.com/forum.php?mod=viewthread&tid=37821 还有,你这些都是一个问题里面的,不要总是发新的帖子,在原来的帖子里跟帖,否则显得很乱,而且之前的讨论结果看起来也比较费劲
 楼主| 发表于 2005-6-3 14:22:00 | 显示全部楼层
引用“发贴心情 Excel的xls文件到底如何与ACAD简单的相联系
excel,大家总是费尽心机的使用各种方法用LISP与他进行数据库的连接,其实你在记事本中按照表格的形式组织数据,保存为excel,后缀,在excel中照样能使用,到这里,大家应该知道我想说的到底是什么问题:”
但在上面的所说的[I]“你在记事本中按照表格的形式组织数据,保存为excel,后缀”,[/I]这一点如何实现保存功能,现在的问题就在这。我只能在CAD的文本框输出数据,没法出现使之保存为其他文件的功能,还请飞哥指点!
 楼主| 发表于 2005-6-3 15:18:00 | 显示全部楼层
飞哥,你上会说我定义了函数但没有使用,到底在哪调用,我不知道,能不能帮我编辑一下,我真的找不到办法了,何况毕业在即,麻烦飞哥了! (Defun C:SPLL()
(vl-load-com)
(PrinC "\n这是对 Spline 进行数据分析的基本程序...")
(While(progn(setq pen(car(entsel "\n指定一条 Spline: ")))
(/= "SPLINE"(cdr(assoc 0 (entget pen))))
)
(Alert "所指对象不是 Spline,请重新指定...")
)
(princ "\这是一条:")
(setq s (getstring))
(princ "\请选择原点:")
(setq pt1(getpoint))
(print pt1)
(setq a1(car pt1))
(setq a2(cadr pt1))
(setq ent(entget pen))
(setq ct 0)
(textpage)
(princ"\n 拟合点的坐标值:")
(setq c1(length ent))
(while(< ct c1)
(setq d2(car(nth ct ent)))
(if(= 10 d2)
(progn
(setq d3(cdr(nth ct ent)))
(setq b1(car d3))
(setq b2(cadr d3))
(setq b1(- b1 a1))
(setq b1(abs b1))
(setq b2(- b2 a2))
(setq b2(abs b2))
(print b1)
(print b2)
)
)
(setq ct(+ 1 ct))
)
(print)
(vl-load-com)
(defun DSX-TypeLib-Excel ( / sysdrv tlb)
(setq sysdrv (getenv "systemdrive"))
(cond
( (setq tlb (findfile (strcat sysdrv "\\Program Files\\Microsoft Office\\Office\\Excel8.olb")))
tlb
)
( (setq tlb (findfile (strcat sysdrv "\\Program Files\\Microsoft Office\\Office\\Excel9.olb")))
tlb
)
( (setq tlb (findfile (strcat sysdrv "\\Program Files\\Microsoft Office\\Office\\Excel10.olb")))
tlb
)
( (setq tlb (findfile (strcat sysdrv "\\Program Files\\Microsoft Office\\Office\\Excel.exe")))
tlb
)
( (setq tlb (findfile (strcat sysdrv "\\Program Files\\Microsoft Office\\Office11\\Excel.exe")))
tlb
)
)
)
(defun DSX-Load-TypeLib-Excel ( / tlbfile tlbver out)
(cond
( (null msxl-xl24HourClock)
(if (setq tlbfile (DSX-TypeLib-Excel))
(progn
(setq tlbver (substr (vl-filename-base tlbfile) 6))
(cond
( (= tlbver "9")
(princ "\n初始化 Microsoft Excel 2000...") )
( (= tlbver "8")
(princ "\n初始化 Microsoft Excel 97...") )
( (= (vl-filename-base tlbfile) "Excel.exe")
(princ "\n初始化 Microsoft Excel 2003...")
)
)
(vlax-import-type-library
:tlb-filename tlbfile
:methods-prefix "msxm-"
:properties-prefix "msxp-"
:constants-prefix "msxc-"
)
(if msxl-xl24HourClock (setq out T))
)
)
)
( T (setq out T) )
)
out
)
(defun DSX-Open-Excel-New (dmode / appsession)
(princ "\n创建一个新的 Excel 电子表格文件...")
(cond
( (setq appsession (vlax-create-object "Excel.Application"))
(vlax-invoke-method (vlax-get-property appsession 'WorkBooks) 'Add)
(if (= (strcase dmode) "SHOW")
(vla-put-visible appsession 1)
(vla-put-visible appsession 0)
)
)
)appsession
)
(defun DSX-Excel-Put-RowList (lst startrow startcol)
(foreach itm lst
(msxl-put-value
(DSX-Excel-Get-Cell range startrow startcol)
itm
)
(setq startcol (1+ startcol))
)
)
)
 楼主| 发表于 2005-6-3 16:34:00 | 显示全部楼层
飞哥,我现在调试时,在于下面的程序中红颜色的地方报错,说是参数类型错误,我看不懂,麻烦飞哥看看! defun DSX-TypeLib-Excel ( / sysdrv tlb)
(setq sysdrv (getenv "systemdrive"))
(cond
( (setq tlb (findfile (strcat sysdrv "\\Program Files\\Microsoft Office\\Office\\Excel8.olb")))
tlb
)
( (setq tlb (findfile (strcat sysdrv "\\Program Files\\Microsoft Office\\Office\\Excel9.olb")))
tlb
)
( (setq tlb (findfile (strcat sysdrv "\\Program Files\\Microsoft Office\\Office\\Excel10.olb")))
tlb
)
( (setq tlb (findfile (strcat sysdrv "\\Program Files\\Microsoft Office\\Office\\Excel.exe")))
tlb
)
( (setq tlb (findfile (strcat sysdrv "\\Program Files\\Microsoft Office\\Office11\\Excel.exe")))
tlb
)
)
)
(defun DSX-Load-TypeLib-Excel ( / tlbfile tlbver out)
(cond
( (null msxl-xl24HourClock)
(if (setq tlbfile (DSX-TypeLib-Excel))
(progn
(setq tlbver (substr (vl-filename-base tlbfile) 6))
(cond
( (= tlbver "9")
(princ "\n初始化 Microsoft Excel 2000...") )
( (= tlbver "8")
(princ "\n初始化 Microsoft Excel 97...") )
( (= (vl-filename-base tlbfile) "Excel.exe")
(princ "\n初始化 Microsoft Excel 2003...")
)
)
(vlax-import-type-library
:tlb-filename tlbfile
:methods-prefix "msxl-"
:properties-prefix "msxl-"
:constants-prefix "msxl-"
)
(if msxl-xl24HourClock (setq out T))
)
)
)
( T (setq out T) )
)
out
)
(defun DSX-Open-Excel-New (/ appsession)
(princ "\n创建一个新的 Excel 电子表格文件...")
(cond
( (setq appsession (vlax-create-object "Excel.Application"))
(vlax-invoke-method (vlax-get-property appsession 'WorkBooks) 'Add)
(if(equal (strcase dmode) "SHOW") (vla-put-visible appsession 1)
(vla-put-visible appsession 0)
)
)
)appsession
)
(defun DSX-Excel-Put-RowList (lst startrow startcol)
(foreach itm lst
(msxl-put-value
(DSX-Excel-Get-Cell range startrow startcol)
itm
)
(setq startcol (1+ startcol))
)
)
(Defun C:SPLL()
(PrinC "\n这是对 Spline 进行数据分析的基本程序...")
(While(progn(setq pen(car(entsel "\n指定一条 Spline: ")))
(/= "SPLINE"(cdr(assoc 0 (entget pen))))
)
(Alert "所指对象不是 Spline,请重新指定...")
)
(princ "\这是一条:")
(setq s (getstring))
(princ "\请选择原点:")
(setq pt1(getpoint))
(print pt1)
(setq a1(car pt1))
(setq a2(cadr pt1))
(setq ent(entget pen))
(setq ct 0)
(textpage)
(princ"\n 拟合点的坐标值:")
(setq c1(length ent))
(while(< ct c1)
(setq d2(car(nth ct ent)))
(if(= 10 d2)
(progn
(setq d3(cdr(nth ct ent)))
(setq b1(car d3))
(setq b2(cadr d3))
(setq b1(- b1 a1))
(setq b1(abs b1))
(setq b2(- b2 a2))
(setq b2(abs b2))
(print b1)
(print b2)
)
)
(setq ct(+ 1 ct))
)
(print)
(vl-load-com)
(DSX-TypeLib-Excel)
(DSX-Load-TypeLib-Excel)
(DSX-Open-Excel-New t)
(setq xlapp1(DSX-Load-TypeLib-Excel t))
(DSX-Excel-Put-RowList lst startrow startcol)
)
发表于 2005-6-3 18:46:00 | 显示全部楼层
让你不要总发新帖,怎么就看不见!!!!!!
 楼主| 发表于 2005-6-3 21:22:00 | 显示全部楼层
那个是新的,我重新编辑了,本来的有点乱1
 楼主| 发表于 2005-6-8 11:08:00 | 显示全部楼层
飞哥我有个问题想问问:在LISP中打开一个文件,并且想覆盖掉它原先的数据,看书上讲的只是一些命令,没有例子,所以自己编的时候出错了!
(Defun C:SPLL()
(vl-load-com)
(PrinC "\n这是对 Spline 进行数据分析的基本程序...")
(While(progn(setq pen(car(entsel "\n指定一条 Spline: ")))
(/= "SPLINE"(cdr(assoc 0 (entget pen))))
)
(Alert "所指对象不是 Spline,请重新指定...")
)
(setq ent(entget pen))
(setq ct 0)
(textpage)
(princ"\n 拟合点的坐标值:")
(setq c1(length ent))
(repeat (length ent)
(print (nth ct ent))
(setq ct(+ 1 ct))
)
(princ)
(setq txt (cdr (assoc 1 (entget ent))));ent为文本对象名
(write-line txt (setq f (open "TID.bri" "w")));写
(close f)
)
好象是没有和那个文件连上!

发表于 2005-6-8 11:21:00 | 显示全部楼层
lxz0929发表于2005-6-8 11:08:00飞哥我有个问题想问问:...

还是抄的对不对?(setq txt (cdr (assoc 1 (entget ent))));-------ent为文本对象名? TID.bri才是文件名,没有连接上文件是因为你的文件名没有带路径,写到的估计不是原来原来的文件--------------------
发表于 2005-6-8 12:00:00 | 显示全部楼层
给你的回答有看吗???????看2楼。。。之间就回答了,你不看,2楼又给你你链接,你还是不看,,,,真的就要别人把什么都写好了,完完整整地给你吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 13:25 , Processed in 0.177390 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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