明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2362|回复: 4

求助,关于grread函数的用法

[复制链接]
发表于 2012-7-1 19:05:02 | 显示全部楼层 |阅读模式
写了一个小程序想加入动态显示,不知道该加在哪里,希望高手赐教。;标注坐标
(defun c:11 ()
  (setvar "cmdecho" 0)
  (setq osmode_bak (getvar "osmode"))
  (setvar "osmode" 0)
  (setq p1 (getpoint "\nP1:"))
  (setq p2 (getpoint p1 "\nP2:"))
  (setq ang (angle p1 p2))
  (cond
    ((> ang (* 1.5 pi)) (setq p3 (polar p2 0 18)))
    ((> ang pi) (setq p3 (polar p2 pi 18)))
    ((> ang (* 0.5 pi)) (setq p3 (polar p2 pi 18)))
    ((< ang (* 0.5 pi)) (setq p3 (polar p2 0 18)))
  )
  (setq pt1x (rtos (car p1) 2 3))
  (setq pt1y (rtos (cadr p1) 2 3))
  (command "pline" p1 p2 p3 "")
  (if (< (car p2) (car p1)) (setq pt p3) (setq pt p2))
  (command "text" pt 2 "" pt1x)
  (command "text" "j" "tl" pt 2 "" pt1y)
  (setvar "osmode" osmode_bak)
  (setvar "cmdecho" 1)
  (princ)
)



该贴已经同步到 dalin1985的微博
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-7-1 19:08:58 | 显示全部楼层
帮你顶.跟你一起学一学这个函数.
发表于 2012-10-31 17:41:30 | 显示全部楼层
也顶一个,期望有高手来详解一下这个函数!
发表于 2012-10-31 21:15:30 | 显示全部楼层
(defun c:tt  (/ MIND P1 LOOP GR P2 DIST ANG TXTSTR TEXT LINE LINE1 *error*)
  (setq p1 (getpoint "\n第一点:"))
  (if p1
    (setq p1 (trans p1 1 0)))
  (setq loop t)
  (while (and p1 loop)
    (setq gr (grread t 15))
    (cond
      ((= 5 (car gr))
       (setq p2 (trans (cadr gr) 1 0))
       (setq dist (distance p1 p2)
             p2 (polar p1 (setq ang (angle p1 p2)) dist)
             )
       (setq txtstr (strcat (rtos (car p1) 2 3) "\n" (rtos (cadr p1) 2 3) ))
       (if text
         (progn
            (setq text (subst (cons 1 txtstr) (assoc 1 text) text))
           (setq text (subst (cons 10 (polar p2 (* pi 0.5) 6.5)) (assoc 10 text) text))
           (entmod text)
           )
         (progn
           (entmake
             (list '(0 . "MTEXT")
                   '(100 . "AcDbEntity")
                   '(67 . 0)
                   '(100 . "AcDbMText")
                   (cons 10 (polar p2 (* pi 0.5) 6.5))
                   (cons 1 txtstr)
                   (cons 40 5)
                   )
             )
           (setq text (entget (entlast)))
           )
         )
       (if line
         (entmod (subst (cons 11 p2) (assoc 11 line) line))
         (progn
           (entmake
             (list '(0 . "line")
                   (cons 10 p1)
                   (cons 11 p2)
                   )
             )
           (setq line (entget (entlast)))
           )
         )
       )
      
      ((or
         (= 3 (car gr))
         (= 25 (car gr))
         (and (= 2 (car gr)) (= (cadr gr) 13))
         (and (= 2 (car gr)) (= (cadr gr) 32))
         )
       (setq loop nil)
     
       )
      )
    )

  
           (entmake
             (list '(0 . "line")
                   (cons 10 p2)
                   (cons 11 (polar p2 0 50))
                   )
             )
           
  (princ)
  )
发表于 2012-10-31 21:43:33 | 显示全部楼层
我会的一种grread的用法是:先建立项目,然后通过grread函数的返回值来修改这个项目
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-5 04:33 , Processed in 0.156590 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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