找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 10353|回复: 20

[求助] 错误: 参数类型错误: 二维/三维点: nil

[复制链接]
发表于 2017-2-5 23:36:09 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 行雲 于 2017-2-5 23:36 编辑

       各位好,这是一段求线段上的点的代码,不太稳定,具体表现在点选竖直线(即y轴走向的线段)时,程序报错误: 参数类型错误: 二维/三维点: nil
打印码(princ "\nAAA,,,")所处位置始不再显示。它上面那行没看出什么问题,不知是不是取线段中点时出问题了,想请各位指出问题所在,谢谢大家
         (setq en (entsel "\n参考边"))
         (setq endata (entget (car en)))
         (setq entyp (cdr (assoc 0 endata)))

         (setq midpt (osnap (cadr en) "mid"));中点

         (setq endp1 (osnap midpt "end")) ;端点1

         setq endp2 (polar endp1 (angle endp1 midpt) (* (distance endp1 midpt) 2.0))) ;端点2
(princ "\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
         (command "xline" endp1 endp2 "")

此外 (command "xline" endp1 endp2 "")产生的线,有时会与“参考边”成一定夹角,即从“参考边”上求出来的两个点 endp1 endp2 与实际点发生倾角
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2017-2-5 23:47:32 | 显示全部楼层
细节:被选"参考边"线段两端均在屏幕显示范围内,可顺利求出。如有一端不在屏显示范围内则报错,真奇怪,,,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2017-2-5 23:51:38 | 显示全部楼层
osnap 不一定是期望点,起点、中点、终点用 dxf 或者 vlax-curve 类函数去获取
(setq e (car (ssget "+.:S:E" '((0 . "line")))))
(setq el (entget (ssname e 0)))
(setq sp (cdr (assoc 10 el)));起点
;;(vlax-curve-getstartpoint (ssname e 0));起点
(setq ep (cdr (assoc 11 el)));终点
;;(vlax-curve-getendpoint (ssname e 0));终点
(setq mp (polar sp (angle sp ep) (/ (distance sp ep) 2)));中点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-2-5 23:54:25 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2017-2-6 00:10:33 | 显示全部楼层

三个点都求出来了,我分别在三个点上用代码画了三个圆,都出来了,在打印码下面用代码画。但是就是不稳定,像二楼那情形,,,此外出现倾角的问题也不明甚解
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-6 00:16:10 | 显示全部楼层

谢谢你,我试试,,另外,请教一下,这类;(vlax-curve-getendpoint (ssname e 0))貌似它不叫lsp代码吗?好像它有别的什么叫法,对不?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-2-6 00:25:13 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2017-2-6 00:29:35 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2017-2-6 01:14:46 | 显示全部楼层

你好,代码似乎有点问题,请你再帮看看,好不?
(defun c:fx (/ e el sp ep mp)
(setvar "cmdecho" 0)
(setq os (getvar "osmode"))
(setvar "osmode" 0)
  (while (setq e (car (ssget "+.:S:E" '((0 . "line,polyline")))))
         (setq el (entget (ssname e 0)))
         ;(setq sp (cdr (assoc 10 el)));起点
         (setq sp (vlax-curve-getstartpoint (ssname e 0)));起点
         ;(setq ep (cdr (assoc 11 el)));终点
         (setq sp (vlax-curve-getendpoint (ssname e 0)));终点
         ;(setq mp (polar sp (angle sp ep) (/ (distance sp ep) 2)));中点
         (command "xline" sp ep "")
  )
(princ)
)

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

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2017-2-6 01:45:47 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2017-2-19 22:49:59 | 显示全部楼层

你好,请问为什么这样不行啊?
(defun c:fx (/ e el sp ep mp)
(setvar "cmdecho" 0)
(setq os (getvar "osmode"))
(setvar "osmode" 0)
   (while (setq el (entget (car (entsel "\n参考边"))))
          (setq sp (cdr (assoc 10 el)))
          (setq ep (cdr (assoc 11 el)))
          (command "xline" sp ep "")
   )
(setvar "osmode" os)
(princ)
)

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-2-19 23:45:20 | 显示全部楼层

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-2-19 23:53:34 | 显示全部楼层

代码我试了, 选择一个直线, 能画出XLINE,

但是如果不是LINE呢?

你的代码有几个地方有问题

1、(entget (car (entsel)))的问题, entget后面必须是实体名,函数才正常,如果没选到实体,(car (entsel)) 返回的是NIL, 那么 (entget nil) 是要报错终止程序的,你应该在用 entget之前,判断是否取得了实体。应该改为:


(while (setq e (car (entsel "\n参考边")))
  (setq el (entget e))
  (setq sp (cdr (assoc 10 el)))
  (setq ep (cdr (assoc 11 el)))
  (command "xline" sp ep "")
) ;_ end of while


2、你的程序只能适合LINE,因为你用的组名10,11取起点和终点,其他的曲线不是这样定义的。

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

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

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

使用道具 举报

 楼主| 发表于 2017-2-20 14:53:15 | 显示全部楼层

多谢版主,昨天试程序时没关闭CAD重新加载,所以,,,有劳阁下了,谢谢
目前,该程序对多义线无效,求不出多义线中某线段的那两点,不知该怎么改呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 07:24 , Processed in 0.190724 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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