明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1513|回复: 9

[求助]生成直线不成功

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

(defun C:tt()
(setvar "cmdecho" 0)
(setq
      e (entget (car (entsel)))
      pt1 (cdr (assoc 10 e))
      pt2 (cdr (assoc 11 e))
      ang (* (/ (angle pt1  pt2) pi) 180)
      d1  (-(car pt1) (car pt2))
      d2  (-(cadr pt1) (cadr pt2))
      d3  (-(caddr pt1) (caddr pt2))
      dis (sqrt (+ (* d1 d1) (* d2 d2) (* d3 d3)))
      midp (polar pt1 ang (/ dis 2))
      )
    (command "line" pt1 midp "")
    (command "line" pt2 midp "")
  )

已知一条直线,我选取它后,想生成两条直线

原直线的端点与中点的联线

但是不成功,为什么呢?

发表于 2009-6-16 18:51:00 | 显示全部楼层

    (command "line" pt1 midp "")
    (command "line" pt2 midp "")

-》

    (command "line" "non" pt1 "non" midp "")
    (command "line" "non" pt2 "non"midp "")

用 BREAK 不就解决了吗

 楼主| 发表于 2009-6-16 19:39:00 | 显示全部楼层

加non表示什么意思呢?关捕捉吗?

恩,这个程序不是最终想要的结果,最终的结果是想选中已有直线,生成打断符号。

初学lsp,一步一步来吧

谢谢

 楼主| 发表于 2009-6-16 20:27:00 | 显示全部楼层
加non,还是没有成功,怎么回事呢?
发表于 2009-6-16 21:44:00 | 显示全部楼层

ang (* (/ (angle pt1  pt2) pi) 180)
这句改为

ang (angle pt1  pt2)

polar 看帮助

 楼主| 发表于 2009-6-16 21:58:00 | 显示全部楼层

恩,谢谢楼上,问题已解决

发表于 2009-6-18 08:49:00 | 显示全部楼层

d1 (/ (+(car pt1) (car pt2)) 2)
d2 (/  (+(cadr pt1) (cadr pt2)) 2)
d3  (/ (+(caddr pt1) (caddr pt2)) 2)

midp (list di d2 d3)

用这个求中点,不会出现角度反方向的情况

 楼主| 发表于 2009-6-21 09:28:00 | 显示全部楼层

(defun C:tt( / e pt1 pt2)
    (COMMAND ".UNDO" "BE")
    (setvar "cmdecho" 0)
    (setq Ln (getvar "CLAYER"))
    (setvar "Clayer" LN)
    (setq ss (entsel)) 
    (setq e (entget (car ss))
          pt1 (cdr (assoc 10 e))
          pt2 (cdr (assoc 11 e))
          int 10
          int (getint (strcat "\n请输入比例:<" (itoa int) ">"))
          dis1  (-(/ (distance pt1 pt2) 2) (* int 2.25 ))
          dis2  (-(/ (distance pt1 pt2) 2) (* int 2.25 ))
          dis   (/ (distance pt1 pt2) 2)
          midp1 (polar pt1 (angle pt1 pt2)  dis1)
          midp2 (polar pt2 (angle pt2 pt1)  dis2)
          midp  (polar pt2 (angle pt2 pt1)  dis)
          ang (* (/ (angle pt2 pt1) pi) 180)
    )
    (if (tblsearch "layer" "T填充")
        ()
        (command "layer" "n" "T填充" "C" "251" "T填充" "")
        )
        (setvar "Clayer" "T填充")
    (command "line" "non" pt1 "non" midp1  "")
    (command "line" "non" pt2 "non" midp2  "")
    (command "erase" ss "")
    (command "insert" "符号" midp  int int  ang "")
    (setvar "Clayer" LN)
    (COMMAND ".UNDO" "E")
    (COMMAND "")
)

未知命令“TT”。按 F1 查看帮助。为什么呢

 楼主| 发表于 2009-6-25 15:06:00 | 显示全部楼层

未知命令“TT”。按 F1 查看帮助。

程序能执行,但有以上问题出现,哪里错了呢?

发表于 2009-6-25 20:55:00 | 显示全部楼层
这句末尾多了一对双引号
(command "insert" "符号" midp  int int  ang "")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 05:27 , Processed in 0.168010 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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