明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3875|回复: 6

错误提示:参数类型错误:二维/三维点:nil 是什么原因?

[复制链接]
发表于 2012-5-12 13:41 | 显示全部楼层 |阅读模式
程序如下,FAF,IAF,MAPt三点位于一条直线,a i f m值分别为9.26  3.7 1.85 0.56。 c为331,运行之后出现提示:参数类型错误:二维/三维点:nil 。请各位高数指点!
(defun c:jj(/ o a b c d e f g h i j k l m p o1 o2 o3 o4 o5 o6 o7 o8 o9 o10 o11 o12 o13 o14)
(setq o (getpoint"确定FAF位置"))
(setq p (getpoint"确定IAF/IF位置"))
(setq g (getpoint"确定MAPt位置"))
(setq a (getreal"输入IAF/IF保护区半宽"))
(setq i (getreal"输入FAF保护区半宽"))
(setq f (getreal"输入MAPt保护区宽度"))
(setq c (getangle"输入航路的角度"))
(setq m (getreal"输入ATT数值"))
(setq j (/ pi 2))
(setq d (/ pi 6))
(setq e (/ pi 12))
(setq k (/ pi 3))
(setq b (/ (sin e) (cos e)))
(setq h (distance o7 p))
(setq l (distance o8 g))
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(setq o1 (polar o (+ c j) i))
(setq o2 (polar o (- c j) i))
(setq o3 (polar o1 (+ c j k) (* 2 (- a i))))
(setq o4 (polar o2 (- c j k) (* 2 (- a i))))
(setq o5 (polar o1 (- c d) (* 2 (- i f))))
(setq o6 (polar o2 (+ c d) (* 2 (- i f))))
(setq o7 (polar o (+ c pi) (* (sqrt 3)(- a i))))
(setq o8 (polar o c (* (sqrt 3) (- i f))))
(setq o9 (polar o7 (+ c j) (/ a 2)))
(setq o10 (polar o7 (- c j) (/ a 2)))
(setq o11 (polar o8 (+ c j) (/ f 2)))
(setq o12 (polar o8 (+ c j) (/ f 2)))
(setq o13 (polar p (+ c j ) (/ a 2)))
(setq o14 (polar p (- c j) (/ a 2)))
(setq o15 (polar p (+ c j) a))
(setq o16 (polar p (- c j) a))
(setq o17 (polar o11 c (- l m)))
(setq o18 (polar o12 c (- l m)))
(setq o19 (polar o5 c (- l m)))
(setq o20 (polar o6 c (- l m)))
(command "pline" o15 o3 o1 o5 o19 "")
(command "pline" o13 o9 o11 o17 "")
(command "pline" o14 o10 o12 o18 "")
(command "pline" o16 o4 o2 o6 o20 "")
(setvar "cecolor" "bylayer")
(setvar "osmmode" osm)
(princ))
 楼主| 发表于 2012-5-12 16:57 | 显示全部楼层
求高手指导~~~
发表于 2012-5-12 17:45 | 显示全部楼层
(defun c:jj(/ o a b c d e f g h i j k l m p o1 o2 o3 o4 o5 o6 o7 o8 o9 o10 o11 o12 o13 o14)
(setvar "cmdecho" 0)
  (setq o (getpoint "\n确定FAF位置:"))
(setq p (getpoint "\n确定IAF/IF位置:"))
(setq g (getpoint "\n确定MAPt位置:"))
(setq a (getreal "\n输入IAF/IF保护区半宽:"))
(setq i (getreal "\n输入FAF保护区半宽:"))
(setq f (getreal "\n输入MAPt保护区宽度:"))
(setq c (getangle "\n输入航路的角度:"))
(setq m (getreal "\n输入ATT数值:"))
(setq j (/ pi 2))
(setq d (/ pi 6))
(setq e (/ pi 12))
(setq k (/ pi 3))
(setq b (/ (sin e) (cos e)))
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(setq o1 (polar o (+ c j) i))
(setq o2 (polar o (- c j) i))
(setq o3 (polar o1 (+ c j k) (* 2 (- a i))))
(setq o4 (polar o2 (- c j k) (* 2 (- a i))))
(setq o5 (polar o1 (- c d) (* 2 (- i f))))
(setq o6 (polar o2 (+ c d) (* 2 (- i f))))
(setq o7 (polar o (+ c pi) (* (sqrt 3)(- a i))))
(setq o8 (polar o c (* (sqrt 3) (- i f))))
(setq h (distance o7 p))
(setq l (distance o8 g))
(setq o9 (polar o7 (+ c j) (/ a 2)))
(setq o10 (polar o7 (- c j) (/ a 2)))
(setq o11 (polar o8 (+ c j) (/ f 2)))
(setq o12 (polar o8 (+ c j) (/ f 2)))
(setq o13 (polar p (+ c j ) (/ a 2)))
(setq o14 (polar p (- c j) (/ a 2)))
(setq o15 (polar p (+ c j) a))
(setq o16 (polar p (- c j) a))
(setq o17 (polar o11 c (- l m)))
(setq o18 (polar o12 c (- l m)))
(setq o19 (polar o5 c (- l m)))
(setq o20 (polar o6 c (- l m)))
(command "pline" o15 o3 o1 o5 o19 "")
(command "pline" o13 o9 o11 o17 "")
(command "pline" o14 o10 o12 o18 "")
(command "pline" o16 o4 o2 o6 o20 "")
(setvar "cecolor" "bylayer")
  (setvar "cmdecho" 1)
(setvar "osmode" osm)
(princ))
发表于 2012-5-12 17:46 | 显示全部楼层
你也不看看,你的
(setq h (distance o7 p))
(setq l (distance o8 g))
的位置

还有就是最后的

(setvar "osmmode" osm)

单词拼错了
发表于 2012-5-12 21:00 | 显示全部楼层
呵呵,学习了
 楼主| 发表于 2012-5-13 20:09 | 显示全部楼层
叮咚 发表于 2012-5-12 17:46
你也不看看,你的
(setq h (distance o7 p))
(setq l (distance o8 g))

谢谢你的帮助,下面是我改之后的程序,运行后出现,参数类型错误:numberp:nil,这又是什么原因?麻烦高手帮忙检查一下,谢谢!
(defun c:jj(/ o a b c d e f g h i j k l m p o1 o2 o3 o4 o5 o6 o7 o8 o9 o10 o11 o12 o13 o14 o15 o16 o17 o18 o19 o20)
  (setvar "cmdecho" 0)
(setq o (getpoint"确定FAF位置"))
(setq p (getpoint"确定IAF/IF位置"))
(setq g (getpoint"确定MAPt位置"))
(setq a (getreal"输入IAF/IF保护区半宽"))
(setq i (getreal"输入FAF保护区半宽"))
(setq f (getreal"输入MAPt保护区宽度"))
(setq m (getreal"输入ATT数值"))
(setq j (/ pi 2))
(setq d (/ pi 6))
(setq e (/ pi 12))
(setq k (/ pi 3))
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(setq o1 (polar o (+ b j) i))
(setq o2 (polar o (- b j) i))
(setq o3 (polar o1 (+ b j k) (* 2 (- a i))))
(setq o4 (polar o2 (- b j k) (* 2 (- a i))))
(setq o5 (polar o1 (- b d) (* 2 (- i f))))
(setq o6 (polar o2 (+ b d) (* 2 (- i f))))
(setq o7 (polar o (+ b pi) (* (sqrt 3) (- a i))))
(setq o8 (polar o b (* (sqrt 3) (- i f))))
  (setq l (distance o8 g))
  (setq b (angle p o))
(setq h (angle o g))
(setq o9 (polar o7 (+ b j) (/ a 2)))
(setq o10 (polar o7 (- b j) (/ a 2)))
(setq o11 (polar o8 (+ b j) (/ f 2)))
(setq o12 (polar o8 (+ b j) (/ f 2)))
(setq o13 (polar p (+ b j ) (/ a 2)))
(setq o14 (polar p (- b j) (/ a 2)))
(setq o15 (polar p (+ b j) a))
(setq o16 (polar p (- b j) a))
(setq o17 (polar o11 b (- l m)))
(setq o18 (polar o12 b (- l m)))
(setq o19 (polar o5 b (- l m)))
(setq o20 (polar o6 b (- l m)))
(command "pline" o15 o3 o1 o5 o19 "")
(command "pline" o13 o9 o11 o17 "")
(command "pline" o14 o10 o12 o18 "")
(command "pline" o16 o4 o2 o6 o20 "")
(setvar "cecolor" "bylayer")
  (setvar "cmdecho" 1)
(setvar "osmode" osm)
(princ))
发表于 2012-5-13 22:13 | 显示全部楼层
还是老毛病,还是位置的问题,,,给你个提示。。。b的位置,

自己看吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-21 03:05 , Processed in 0.255697 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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