明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2720|回复: 11

[基础] 求教高手,我这个程序应怎么循环

  [复制链接]
发表于 2009-11-17 11:58 | 显示全部楼层 |阅读模式

(defun c:v( / pp1 pp2 a s ang b mpt)
   (command "osnap" "mid" "")
   (command "layer" "s" "0" "")
   (while
   (setq pp1 (getpoint "point pt1"))
   (setq pp2 (getpoint "point pt2"))
   (command "pline" pp1 pp2 "")
   (setq s (distance pp1 pp2))
   (setq a (rtos s 2 2 ))
   (setq ang (angle pp1 pp2))
   (setq b (* (/ ang pi) 180))
   (setq hs ( / s 2))
   (setq hx (polar pp1 ang hs));;;;;;;取得线段的中点
  ;;获取角度
  (if    (> (* (/ ang pi) 180) 180)
    (setq ang (+ ang pi))
  )
  (command "text" "j" "c" hx "0.30" b a)
  (setq pp1 pp2 ) (command pp2)
)
)
(prin1)
)
(prompt "\n <<length>>在图中直接写出长度")

(prin1)

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-11-17 14:31 | 显示全部楼层

在你程序的基础上改了一下

(defun c:v( / pp1 pp2 a s ang b mpt)
   (setvar "osmode" 2)
   (command "layer" "s" "0" "")

   (setq pp1 (getpoint "\n point pt1"))
   (setq pp2 (getpoint "\n point pt2"))


   (while (and (/= pp1 nil)(/= pp2 nil) )
  
   (command "pline" pp1 pp2 "")
   (setq s (distance pp1 pp2))
   (setq a (rtos s 2 2 ))
   (setq ang (angle pp1 pp2))
   (setq b (* (/ ang pi) 180))
   (setq hs ( / s 2))
   (setq hx (polar pp1 ang hs))

  (if    (> (* (/ ang pi) 180) 180)
    (setq ang (+ ang pi))
  )
  (command "text" "j" "c" hx "0.30" b a)
  (setq pp1 pp2 ) (command pp2)


(setq pp1 (getpoint "point pt1"))
(setq pp2 (getpoint "point pt2"))
)
(prin1)
)

(prompt "\n <<length>>在图中直接写出长度")

(prin1)

 楼主| 发表于 2009-11-18 20:00 | 显示全部楼层

谢谢您的指教。。。。。

  还是不能实现我想要那个郊果,我想把程度变得就像画多段线那样。一边画线一边注记长度。

 

发表于 2009-11-18 21:18 | 显示全部楼层

我试过,可以的,也许是文字太小,你看不见

你再试试看,如果不行,我们再联系!

 楼主| 发表于 2009-11-18 21:39 | 显示全部楼层

不是文字是线段不能连续

发表于 2009-11-18 22:27 | 显示全部楼层
[UseMoney=5]
  1. (defun c:draw_pline (/ lst ct pt1 pt2 pt3)
  2.   (setq lst '())
  3.   (setq pt1 (getpoint "\n点取第一点: "))
  4.   (if pt1
  5.     (progn (setq lst (append lst (list pt1)))
  6.            (initget 1)
  7.            (while (setq pt2 (getpoint pt1 "\n下一点: "))
  8.              (grdraw pt1 pt2 7 0)
  9.              (setq s (distance pt1 pt2))
  10.              (setq a (rtos s 2 2))
  11.              (setq ang (angle pt1 pt2))
  12.              (setq b (* (/ ang pi) 180))
  13.              (setq hs (/ s 2))
  14.              (setq hx (polar pt1 ang hs))
  15.              (if (> (* (/ ang pi) 180) 180)
  16.                (setq ang (+ ang pi))
  17.              )
  18.              (command "text" "j" "c" hx "5" b a)
  19.              (setq lst (append lst (list pt2)))
  20.              (setq pt3 pt1
  21.                    pt1 pt2
  22.              )
  23.            )
  24.            (setq ct 1)
  25.            (setvar "cmdecho" 0)
  26.            (setvar "osmode" 0)
  27.            (command "pline" (nth 0 lst))
  28.            (while (nth ct lst) (command (nth ct lst)) (setq ct (1+ ct)))
  29.            (command "")
  30.            (redraw)
  31.     )
  32.   )
  33. )
[/UseMoney]
发表于 2009-11-18 22:38 | 显示全部楼层
以上程序不知能不能满足朋友的要求?

本帖子中包含更多资源

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

x
 楼主| 发表于 2009-11-19 00:11 | 显示全部楼层

谢谢__

大致意思是这样,但还不够完美,线段不能闭合,和选择其它二级命令选项

 楼主| 发表于 2009-11-19 16:38 | 显示全部楼层
有高手能指导 一下吗?
发表于 2009-11-19 21:20 | 显示全部楼层

这个朋友的要求还很高呀,不过好像也能实现

 

源程序下载:

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-5-17 18:14 , Processed in 0.194843 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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