明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1190|回复: 11

[提问] (求助)请教各位大神关于“生成直线阵列”看看能不能帮忙解决

[复制链接]
发表于 2022-5-22 16:47:47 | 显示全部楼层 |阅读模式
10明经币
求助一下各位大神们,有空的话,看能不能练练手,帮小弟解决一下以下功能:

1.指定第一点:
2.指定第二点:
3.请输入直线的长度(带记忆):100
4.请输入直线之间的间距(带记忆):20
注:生成线为图层 Y7
      生成的线垂直于鼠标两点



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

最佳答案

查看完整内容

小改即可,嘿嘿.... (defun C:NM (/ p1 p1d p2 ps ps1 ps2) (setq p1 (getpoint "\n第一点:")) (setq p2 (getpoint "\n第二点:" p1)) (or *dchangdu* (setq *dchangdu* 1)) (setq *dchangdu* (if (setq odchangdu(getdist(strcat "\r请输入直线长度:"))) odchangdu *dchangdu* ) ) (or *djianju* (setq *djianju* 1)) (setq *djianju* (if (setq odjia ...
发表于 2022-5-22 16:47:48 | 显示全部楼层
999999 发表于 2022-5-22 19:36
哈哈,你都从小白到大神了,我悟性比较低,大神,你帮忙看看,能不能让白线不超出两点 ...


小改即可,嘿嘿....
(defun C:NM (/   p1 p1d p2 ps ps1 ps2)
        (setq p1 (getpoint "\n第一点:"))
        (setq p2 (getpoint "\n第二点:" p1))
        (or *dchangdu* (setq *dchangdu* 1))
  (setq  *dchangdu* (if (setq odchangdu(getdist(strcat "\r请输入直线长度<" (rtos *dchangdu*) ">:")))
                                                                                        odchangdu
                                                                                        *dchangdu*
                                                                                )
  )
        (or *djianju* (setq *djianju* 1))
  (setq  *djianju* (if (setq odjianju(getdist(strcat "\r请输入间距<" (rtos *djianju*) ">:")))
                                                                                 odjianju
                                                                                 *djianju*
                                                                         )
  )
        (setq cishu(atoi(rtos(-(/(distance p1 p2)*djianju*)0.5)2 0)))
        (setq p1d p1)
        (setq ang(angle p1d p2))
        (repeat cishu
                (setq ps(polar p1 (angle p1d p2)*djianju*))
                (setq ps1(polar ps (+ ang(* 0.5 pi))(* 0.5 *dchangdu*)))
                (setq ps2(polar ps (+ ang(* 1.5 pi))(* 0.5 *dchangdu*)))
                (entmake (list '(0 . "LINE") (cons 10 ps1) (cons 11 ps2)))
                (vla-put-layer (vlax-ename->vla-object (entlast)) "Y7")
                (setq p1 ps)
        )
        (princ)
)
回复

使用道具 举报

发表于 2022-5-22 17:45:56 | 显示全部楼层
本帖最后由 xj6019 于 2022-5-22 18:21 编辑



(defun C:NM (/   p1 p1d p2 ps ps1 ps2 ang)
        (setq p1 (getpoint "\n第一点:"))
        (setq p2 (getpoint "\n第二点:" p1))
        (or *dchangdu* (setq *dchangdu* 1))
  (setq  *dchangdu* (if (setq odchangdu(getdist(strcat "\r请输入直线长度<" (rtos *dchangdu*) ">:")))
                                                                                        odchangdu
                                                                                        *dchangdu*
                                                                                )
  )
        (or *djianju* (setq *djianju* 1))
  (setq  *djianju* (if (setq odjianju(getdist(strcat "\r请输入间距<" (rtos *djianju*) ">:")))
                                                                                 odjianju
                                                                                 *djianju*
                                                                         )
  )

        (setq cishu(atoi(rtos(/(distance p1 p2)*djianju*)2 0)))
        (setq p1d p1)
  (setq ang(angle p1d p2))
        (repeat cishu
                (setq ps(polar p1 (angle p1d p2)*djianju*))
                (setq ps1(polar ps (+ ang(* 0.5 pi))(* 0.5 *dchangdu*)))
                (setq ps2(polar ps (+ ang(* 1.5 pi))(* 0.5 *dchangdu*)))
                (entmake (list '(0 . "LINE") (cons 10 ps1) (cons 11 ps2)))
                (vla-put-layer (vlax-ename->vla-object (entlast)) "Y7")
                (setq p1 ps)
        )
        (princ)
)

点评

(repeat (1- cishu) ...  发表于 2022-5-22 20:16

评分

参与人数 1明经币 +1 收起 理由
xyp1964 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2022-5-22 17:56:41 | 显示全部楼层
xj6019 发表于 2022-5-22 17:45
(defun C:NM (/   p1 p1d p2 ps ps1 ps2 ang)
        (setq p1 (getpoint "\n第一点:"))
        (se ...

这种简单的你自己凑凑应该是可以拼起来的吧
回复

使用道具 举报

 楼主| 发表于 2022-5-22 19:36:05 | 显示全部楼层
xj6019 发表于 2022-5-22 17:56
这种简单的你自己凑凑应该是可以拼起来的吧

哈哈,你都从小白到大神了,我悟性比较低,大神,你帮忙看看,能不能让白线不超出两点

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2022-5-22 20:26:05 | 显示全部楼层

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2022-5-22 20:37:08 | 显示全部楼层
xj6019 发表于 2022-5-22 17:45
(defun C:NM (/   p1 p1d p2 ps ps1 ps2 ang)
        (setq p1 (getpoint "\n第一点:") ...

厉害厉害了
回复

使用道具 举报

 楼主| 发表于 2022-5-22 20:39:50 | 显示全部楼层

院长大人给的动图,效果实现的真棒,谢谢院长大人的参与
回复

使用道具 举报

发表于 2022-5-22 22:10:19 | 显示全部楼层
本帖最后由 jjj666 于 2022-5-22 22:30 编辑

我也来凑个热闹:

(defun c:asas( / p1 p2 L d da x1 y1 x2 y2 x y xp1 xp2 pl1 pl2 p11)  ;生成直线阵列
   (setvar "cmdecho" 0)
   (princ "\n本程序用于在给定的两点之间生成直线阵列。")
   (setq p1 (getpoint "\n指定第一点:"))
   (setq p2 (getpoint "\n指定第二点:"))
   (setq L (getreal "\n请输入直线的长度(Enter 默认100):"))
   (if (= L nil ) (setq L 100))
   (setq d (getreal "\n请输入直线的间距(Enter 默认20):"))
.......
     (princ)
  )
回复

使用道具 举报

发表于 2022-5-22 22:15:11 | 显示全部楼层
这个不超出。d:\as.jpg

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 18:00 , Processed in 0.191055 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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