找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1980|回复: 17

[求助] 新手求助,希望版主看到帮助!在此谢谢了!在线等待!!!!

[复制链接]
发表于 2013-5-1 14:31:10 | 显示全部楼层 |阅读模式

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

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

×
现在本人的想法是:能否在标高后面加多一项标识,即格式如下:                                    “1,X1,100.12,200.12,10.30”;“2,X1,300.12,400.12,20.30”,其中X1的作用就是能让lisp程序知道这两个点要连成一条直线,当然连第二条直线就得用                 X2等等依些类,第N条直线就用XN以下程序第一次运行时出现错误,第二次运行就正常了,希望高手帮忙解决,同时希望高手在此程序上添加此功能,X1形成的线放在一个属性层里,X2形成的线放在一个属性层里、Xn形成的线放在一个属性层里,谢谢了

[pcode=lisp,true]
;;;主程序开始
(defun c:test () ;_这里的函数名:test  你自己改一下  
(setq laylist '("clayer" "属性层"))  ;图层列表
  (setq n 0)
   (while (setq lay (nth n laylist)) ;如果 lay 不为 nil 则进行循环
    (mla lay 1)    ;创建图层
    (setq n (1+ n))
   )
   (setq xianhao (getint "\n输入一个基准线号(整数):"))
   (if (and (setq file (getfiled "选择文件" "" "*" 8)))
             (SETQ F_ID (open file "r"))
        )     
   (setq lay (getvar "clayer"));_获取当前层,
  (setq os (getvar "osmode"))
   (setvar "cmdecho" 0)
   (setvar "clayer" "属性层");_设置"属性层"为当前层,如果"属性层"冻结状态会影响程序
  (setvar "osmode" 0)
   (setq xx nil)
   (while (SETQ text0 (READ-LINE F_ID))
     (setq n (vl-string-position (ascii ",") text0))
     (setq n0 (vl-string-position (ascii ",") text0 (1+ n)))
     (setq n1 (vl-string-position (ascii ",") text0 (1+ n0)))
     (setq n2 (vl-string-position (ascii ",") text0 (1+ n1)))
     (setq xh  (substr text0 1 n)
    XX0 (substr text0 (+ n 2) (- n0 (1+ n)))
    x   (atof (substr text0 (+ n0 2) (- n1 (1+ n0))))
    y   (atof (substr text0 (+ n1 2) (- n2 (1+ n1))))
    p0  (list x y)
    p1  (list (- (car p0) 0.38) (- (cadr p0) 0.13))
    p2  (list (+ (car p0) 0.26) (- (cadr p0) 0.24))
    p3  (polar p0 pi 0.02)
    p4  (polar p0 0 0.02)
    bg  (substr text0 (+ n2 2))
     )
     (setq text1 (list '(0 . "TEXT")
         '(100 . "AcDbEntity")
         '(67 . 0)
         '(8 . "ZDH")
         (cons 10 p1)
         '(40 . 0.2)
         (cons 1 xh)
   )
     )
     (setq text2 (list '(0 . "TEXT")
         '(100 . "AcDbEntity")
         '(67 . 0)
         '(8 . "GCD")
         (cons 10 p2)
         '(40 . 0.4)
         (cons 1 bg)
   )
     )
     (setq dount (list '(0 . "LWPOLYLINE")
         '(100 . "AcDbEntity")
         '(67 . 0)
         '(8 . "GCD")
         '(100 . "AcDbPolyline")
         '(90 . 2)
         '(70 . 129)
         '(43 . 0.5)
         '(38 . 0.0)
         '(39 . 0.0)
         (cons 10 p3)
         '(40 . 0.5)
         '(41 . 0.5)
         '(42 . 1.0)
         (cons 10 p4)
         '(40 . 0.5)
         '(41 . 0.5)
         '(42 . 1.0)
         '(210 0.0 0.0 1.0)
   )
     )
     (entmake text1)
     (entmake text2)
     (entmake dount)
     (if (/= xx0 xx) ;_if_1
       (progn ;_progn_1
(if (/= xx nil)
    (progn ;_progn_3
      (command "")
      (make_xianhao text-sp front-p0)
      (setq xianhao (1+ xianhao))  
    ) ;_end_progn_3
)
(command "pline" p0)

       ) ;_end_progn_1
       (progn ;_progn_2
(command p0)
(setq front-p0 p0)
       ) ;_end_progn_2
     ) ;_end_if_1
     (setq xx xx0)
   )
   (command "")
   (make_xianhao text-sp front-p0)
   (CLOSE F_ID)
   (setvar "clayer" lay)
   (setvar "osmode" os)
   (setvar "cmdecho" 1)
   (prompt "欢迎使用自动绘图程序")
   (princ)
) ;_主程序结束
;;;获取多义线指定顶点坐标
(defun get-point (obj n)
   (setq point-00 (vlax-safearray->list
      (vlax-variant-value
        (vla-get-coordinate obj n)
      )
    )
   )
   point-00
)
;;;;获取多义线顶点总数的一半值
(defun point-number (obj)
   (setq data0 (vla-get-coordinates obj))
   (setq data0 (vlax-safearray->list
   (vlax-variant-value (vla-get-coordinates obj))
        )
   )
   (setq k (length data0))
   (setq k (fix (/ k 4)))
   k
)
;;;创建如302、303的线号子程序
(defun make_xianhao (text-sp front-p0)
   (setq ss (ssget "c"
     front-p0
     front-p0
     '((0 . "LWPOLYLINE") (40 . 0.0))
     )
   )
   ;;(if (/= ss nil)
   ;;  (progn;_progn_4
   (setq obj (vlax-ename->vla-object (ssname ss 0)))
   (setq number1 (point-number obj))
   (setq number (1- number1))
   (setq point-1 (get-point obj number))
   (setq point-2 (get-point obj number1))
   (setq ang (angle point-1 point-2)
p5 (polar point-1
          ang
          (/ (distance point-1 point-2) 2)
   )
text-sp (polar p5 (- ang (* pi 0.5)) 0.2)
   )
   (setq text3 (list '(0 . "TEXT")
       '(100 . "AcDbEntity")
       '(67 . 0)
       '(8 . "属性层")
       '(100 . "AcDbText")
       (cons 10 text-sp)
       '(40 . 0.4)
       (cons 1 (rtos xianhao 2 0))
       (cons 50 ang)
       '(41 . 0.8)
       '(7 . "HZ")
        )
   )
   (entmake text3)
)
(defun Mla (W_Lname W_Color / W_layer)
   (setq W_layer (tblsearch "layer" W_Lname))
   (if (= nil W_layer)
     (command "_.layer" "m" W_Lname "c" W_Color "" "")
   )
   (if (/= (getvar "clayer") W_Lname)
     (command "_.layer" "t" W_Lname "s" W_Lname "c" W_Color "" "")
   )
   (if (= (getvar "clayer") W_Lname)
     (command "_.layer" "s" W_Lname "c" W_Color "" "")
   )
   (prin1)
)
[/pcode]
测试数据
61,X1,-17.614,664.042,-2.29
62,X1,-12.384,662.55,-2.72
63,X1,-6.218,661.201,-2.67
64,X1,0.611,660.612,-1.51
65,X1,2.778,661.556,1.09
66,X2,-19.45,662.51,-3.85
67,X2,-17.614,659.946,-2.46
68,X2,-12.384,658.454,-2.18
69,X2,-8.565,654.5465,-2.71
70,X2,-1.736,653.958,-1.92
71,X2,0.431,654.902,2.09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2013-5-1 15:01:21 | 显示全部楼层
群里高手都去哪儿了!第一次发帖!希望版主帮帮忙啊!在线等!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-1 17:52:56 | 显示全部楼层
截取个图片贴上来吧。原始什么样,要改成什么样。测试了下你的程序,做什么? 要选文件打开?打开什么文件?你把程序功能先描述一遍吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-1 18:03:41 | 显示全部楼层

这个程序第一次运行有错误提示!错误: 参数类型错误: lselsetp nil,第二次运行就正常了!我调试了好几天都没有找到那儿错了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-1 18:09:02 | 显示全部楼层
XDSoft 发表于 2013-5-1 17:52
截取个图片贴上来吧。原始什么样,要改成什么样。测试了下你的程序,做什么? 要选文件打开?打开什么文件? ...

这个程序主要是把数据相同的X1连线放在一个层了,数据相同的X2连线放在一个层里!不同编码连成的线放在不同的层了!
61,X1,-17.614,664.042,-2.29
62,X1,-12.384,662.55,-2.72
63,X1,-6.218,661.201,-2.67
64,X1,0.611,660.612,-1.51
65,X1,2.778,661.556,1.09
66,X2,-19.45,662.51,-3.85
67,X2,-17.614,659.946,-2.46
68,X2,-12.384,658.454,-2.18
69,X2,-8.565,654.5465,-2.71
70,X2,-1.736,653.958,-1.92
71,X2,0.431,654.902,2.09

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-1 18:31:03 | 显示全部楼层
cuyongping 发表于 2013-5-1 18:09
这个程序主要是把数据相同的X1连线放在一个层了,数据相同的X2连线放在一个层里!不同编码连成的线放在不 ...

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

使用道具 举报

 楼主| 发表于 2013-5-1 18:39:37 | 显示全部楼层
XDSoft 发表于 2013-5-1 18:31
贴个DWG图上来,还有程序运行要打开文件,要打开什么文件?

谢谢了!放上来了!

调试示例.zip

13.19 KB, 下载次数: 2, 下载积分: D豆 -1 , 活跃度 1

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-1 19:22:31 | 显示全部楼层
cuyongping 发表于 2013-5-1 18:39
谢谢了!放上来了!

(setq file (getfiled "选择文件" "" "*" 8))

改成

(setq file (getfiled "选择文件" "" "*" 0))

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

使用道具 举报

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-5-1 19:35:11 | 显示全部楼层
探亲,没装CAD,也不懂Vlisp,不过看程序中使用了vlax函数,是不是应该加一句vl-load-com函数呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-1 19:37:57 | 显示全部楼层
XDSoft 发表于 2013-5-1 19:22
(setq file (getfiled "选择文件" "" "*" 8))

改成

好像还是不行!第一运行还是出现“输入一个基准线号(整数):1 ; 错误: 参数类型错误: lselsetp nil”不知道为什么?麻烦您了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-1 20:07:45 | 显示全部楼层
ll_j 发表于 2013-5-1 19:35
探亲,没装CAD,也不懂Vlisp,不过看程序中使用了vlax函数,是不是应该加一句vl-load-com函数呢?

加一句vl-load-com函数。好像还是不行!第一运行还是出现“输入一个基准线号(整数):1 ; 错误: 参数类型错误: lselsetp nil”不知道为什么?麻烦您了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-1 20:24:09 | 显示全部楼层
cuyongping 发表于 2013-5-1 20:07
加一句vl-load-com函数。好像还是不行!第一运行还是出现“输入一个基准线号(整数):1 ; 错误: 参数类型错 ...

我这里很正常啊,没错误提示。你自己在getfiled后面的每行加上个打印语句,看看在哪个地方出错了, 你看看f_id变量有值没。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2013-5-1 20:28:36 | 显示全部楼层
XDSoft 发表于 2013-5-1 20:24
我这里很正常啊,没错误提示。你自己在getfiled后面的每行加上个打印语句,看看在哪个地方出错了, 你看看 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 00:32 , Processed in 0.363085 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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