明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5029|回复: 30

[讨论] 如何沿着直线左往右画等距偏移的圆

[复制链接]
发表于 2020-11-6 10:48:05 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 37902505 于 2020-11-7 08:53 编辑

如题

最佳答案

查看完整内容

(defun c:tt5 (/ ang p1 p2) (setq p1 (getpoint"\n>>>选择点1:") p2 (getpoint p1"\n>>>选择点2:") ang (angle p1 p2)) (repeat (fix (/ (distance p1 p2) 100)) (command "circle" "non" (polar (setq p1 (polar p1 ang 100)) (+ ang (* 1.5 pi)) 40) 10) ) )
发表于 2020-11-6 10:48:06 | 显示全部楼层
(defun c:tt5 (/ ang p1 p2)
(setq p1 (getpoint"\n>>>选择点1:") p2 (getpoint p1"\n>>>选择点2:") ang (angle p1 p2))
(repeat (fix (/ (distance p1 p2) 100))
(command "circle" "non" (polar (setq p1 (polar p1 ang 100)) (+ ang (* 1.5 pi)) 40) 10)
)               
)
回复

使用道具 举报

发表于 2020-11-6 13:36:03 | 显示全部楼层
点1到点2是直线?多段线?还是鼠标点2下?
点1到点2都是水平的?没有斜的?
有斜的是哪个点做为基准?
有斜的怎么下移40?
圆是多大?
回复

使用道具 举报

 楼主| 发表于 2020-11-6 13:42:11 | 显示全部楼层
那里没有线,只是鼠标点2下。点1到点2不一定是水平的,也可以是斜的,只要是从点1到点2的距离,就是从左往右的方向都是向一边下移40。圆为直径20MM,谢谢
回复

使用道具 举报

发表于 2020-11-6 13:45:37 | 显示全部楼层
这个用autolisp编程太容易实现了,不需要别的语言。
回复

使用道具 举报

发表于 2020-11-6 14:09:36 | 显示全部楼层
(defun c:tt (/ ang len n nn pt pt1 pt2)
        (if (and
                                (setq pt1 (getpoint "\n第1点"))
                                (setq pt2 (getpoint pt1 "\n第2点"))
                        )
                (progn
                        (setq ang (angle pt1 pt2))
                        (setq len (distance pt1 pt2))
                        (setq n (fix (/ len 100)))
                        (setq pt1 (polar pt1 (- ang (/ pi 2)) 40))
                        (setq nn 0)
                        (repeat n
                                (setq pt (polar pt1 ang (* 100 (setq nn (1+ nn)))))
                                (entmake (list '(0 . "CIRCLE") (cons 10 pt) (cons 40 10)))
                        )
                )
        )
)

评分

参与人数 1金钱 +10 收起 理由
37902505 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2020-11-6 14:14:34 | 显示全部楼层
taoyi0727 发表于 2020-11-6 14:09
(defun c:tt (/ ang len n nn pt pt1 pt2)
        (if (and
                                (setq pt1 (getpoint "\n第1点"))

参数类型错误: point: nil
回复

使用道具 举报

 楼主| 发表于 2020-11-6 14:16:12 | 显示全部楼层
start4444 发表于 2020-11-6 13:57
(defun c:tt5 (/ ang p1 p2)
(setq p1 (getpoint"\n>>>选择点1:") p2 (getpoint p1"\n>>>选择点2:") ang ( ...

真快,高手呀
回复

使用道具 举报

发表于 2020-11-6 14:16:25 | 显示全部楼层
start4444 发表于 2020-11-6 13:57
(defun c:tt5 (/ ang p1 p2)
(setq p1 (getpoint"\n>>>选择点1:") p2 (getpoint p1"\n>>>选择点2:") ang ( ...

第5行加上一句画线语句 :      (command "line" p1 p2 "" )
估计就是楼主想要的结果
回复

使用道具 举报

 楼主| 发表于 2020-11-6 14:16:42 | 显示全部楼层
taoyi0727 发表于 2020-11-6 14:09
(defun c:tt (/ ang len n nn pt pt1 pt2)
        (if (and
                                (setq pt1 (getpoint "\n第1点"))

你和start4444都好厉害呀
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-23 09:39 , Processed in 0.205646 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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