kwok 发表于 2013-3-1 14:18:45

请帮忙修改一下,设置就出错原因(已解决)

本帖最后由 kwok 于 2013-3-2 16:54 编辑

下面的为什么在输入S设置就出错,提示; 错误: 参数类型错误: 二维/三维点: "S"
请指帮修正一下,谢谢!
不知为什么

(defun c:ttt ();;;;;;;;;;;定2点画矩形
(setq p1 (getpoint "\n起点: "))
(if (null rdh)
   (setq rdh 50))
(initget "S ")
       (if (= (setq p2 (getpoint p1 (strcat "\n终点,或[设置(S)]:<高度" (rtos rdh) ">")))
       "S"
         )
         (if (setq s (getdist (strcat "\n设置高度:<" (rtos rdh) ">")))
    (setq rdh s)
         )
       )
(setq p3 (polar p2 (+ (angle p2 p1) (* 0.5 pi)) rdh)
      p4 (polar p1 (+ (angle p2 p1) (* 0.5 pi)) rdh)
   )
(apply 'vl-cmdf (list "_pline" p1 p2 p3 p4 "c"))
(princ)
)

Andyhon 发表于 2013-3-1 14:42:54

本帖最后由 Andyhon 于 2013-3-1 14:43 编辑

当 P2 = "S"

(polar p2 (+ (angle p2 p1) (* 0.5 pi)) rdh)

kwok 发表于 2013-3-1 15:10:53

Andyhon 发表于 2013-3-1 14:42 static/image/common/back.gif
当 P2 = "S"

(polar p2 (+ (angle p2 p1) (* 0.5 pi)) rdh)

我是想需要修改高度时可以改(只需改一次),改完可以记忆,下次就可以直接用,这样每次就用已有的高度
直接画出矩形.
但就是在修改时出错,请问要这样效果可以怎么改?

Andyhon 发表于 2013-3-1 15:38:22

...可以记忆...

建议参考 UReal 自定义函数...
老帖有......

kwok 发表于 2013-3-1 17:02:13

能力有限搞不定,
期待出手帮忙.

Andyhon 发表于 2013-3-1 18:57:32

;;; 定2点画矩形
(defun c:ttt ()
(setq p1 (getpoint "\n起点: ")
       rdh (Ureal 0 "" "\n设置高度: " (cond (*RDH*) (50)))
      p2 (getpoint p1 "\n终点: ")
      p3 (polar p2 (+ (angle p2 p1) (* 0.5 pi)) rdh)
      p4 (polar p1 (+ (angle p2 p1) (* 0.5 pi)) rdh)
   *RDH*rdh
)
(vl-cmdf"_pline" p1 p2 p3 p4 "c")
(princ)
)

kwok 发表于 2013-3-1 19:20:41

本帖最后由 kwok 于 2013-3-1 19:25 编辑

Andyhon 发表于 2013-3-1 18:57 static/image/common/back.gif
;;; 定2点画矩形
(defun c:ttt ()
(setq p1 (getpoint "\n起点: ")

不是我想的效果,
我想的是指定2点就画出矩形,但需要修改高度时,通过输入s来设置修改高度,
(而且设定高度时可以输入也可以直接在图上指定2当距离)
如果不输入s,指定第二点就直接已已有高度画出矩形,
在1楼的码能修改到吗?谢谢!

具体操作是:
1, 指定第一点,然后提示可以通过输入S设定高度和显示已有默认高度50(如果设定过高度就显示新的高度)
2,如果输入S,重设高度(设高度可以输入或直接在图上量取)(修改过的高度能记忆,方便下次调用)
3,如果不输入S,直接指定第二点,画出矩形.

ljpnb 发表于 2013-3-2 10:19:56

本帖最后由 ljpnb 于 2013-3-2 10:20 编辑

(defun c:ttt ()
;;;;;;;;;;;定2点画矩形
(setq p1 (getpoint "\n起点: "))
(setq key T)
(if (null rdh)
    (setq rdh 50)
)
(initget "S ")
(while (and key
              (= (setq p2
                        (getpoint p1
                                  (strcat "\n终点,或[设置(S)]:<高度" (rtos rdh) ">")
                        )
               )
               "S"
              )
       )
    (if        p2
      (setq key nil)
    )
    (if        (setq s (getdist (strcat "\n设置高度:<" (rtos rdh) ">")))
      (setq rdh        s
          key        T
      )
    )
    (initget "S ")
)
(setq        p3 (polar p2 (+ (angle p2 p1) (* 0.5 pi)) rdh)
        p4 (polar p1 (+ (angle p2 p1) (* 0.5 pi)) rdh)
)
(apply 'vl-cmdf (list "_pline" p1 p2 p3 p4 "c"))
(princ)
)

页: [1]
查看完整版本: 请帮忙修改一下,设置就出错原因(已解决)