明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 867|回复: 8

[源码] 一个画中空玻璃的源码同时求加个功能

[复制链接]
发表于 2019-1-19 20:20 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 bai2000 于 2019-1-20 16:36 编辑

发一个画中空玻璃的源码同时求加个功能:在画中空玻璃时单击左键点击插入“立柱”块,插入块后继续画中空玻璃命令,直至按空格键结束。程序和“立柱”块在附件中

附件: 您需要 登录 才可以下载或查看,没有账号?注册
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2019-1-20 16:35 | 显示全部楼层
回复

使用道具 举报

发表于 2019-1-22 11:52 | 显示全部楼层
本帖最后由 start4444 于 2019-1-22 17:35 编辑

  • ;;;;;;;;;;;;;;;;;;;;;;;;;;;
  • (defun c:blz ()
  •   (command "undo" "group")
  •   (setvar "osmode" 255)
  •   (setvar "cmdecho" 0)
  •         (setq p1 (getpoint "\n输入6+12+6中空玻璃第一点:"))
  •   (while
  •     (setq p2 (getpoint p1 "\n输入6+12+6中空玻璃下一点:") ang (angle p1 p2)  p2 (polar p2 (+ pi ang) 80))
  •     (setvar "osmode" 0)
  •     (command "line" p1 p2 "")
  •     (setq ang1 (+ ang (* pi 0.5)))
  •     (setq ec (entlast))
  •     (command "change" ec "" "p" "c" 2 "")
  •     (command "line" (polar p1 ang1 24) (polar p2 ang1 24) "")
  •     (setq ec1 (entlast))
  •     (command "change" ec1 "" "p" "c" 2 "")
  •     (command "line" (polar p1 ang1 1) (polar p2 ang1 1) "")
  •     (setq ec2 (entlast))
  •     (command "change" ec2 "" "p" "c" 8 "")
  •     (command "line" (polar p1 ang1 5) (polar p2 ang1 5) "")
  •     (setq ec4 (entlast))
  •     (command "change" ec4 "" "p" "c" 8 "")
  •     (command "line" (polar p1 ang1 6) (polar p2 ang1 6) "")
  •     (setq ec5 (entlast))
  •     (command "change" ec5 "" "p" "c" 2 "")
  •     (command "line" (polar p1 ang1 18) (polar p2 ang1 18) "")
  •     (setq ec6 (entlast))
  •     (command "change" ec6 "" "p" "c" 2 "")
  •     (command "line" (polar p1 ang1 19) (polar p2 ang1 19) "")
  •     (setq ec3 (entlast))
  •     (command "change" ec3 "" "p" "c" 8 "")
  •     (command "line" (polar p1 ang1 23) (polar p2 ang1 23) "")
  •     (setq ec3 (entlast))
  •     (command "change" ec3 "" "p" "c" 8 "")
  •     (command  "INSERT" "C:\\Users\\Administrator\\Desktop\\隐框立柱a.dwg" (polar p2 ang 80) "" "" (polar p2 ang 200))
  •     (setq p1 (polar p2 ang 160))
  •     (setvar "osmode" 255)
  •     (command "undo" "end")
  •   )
  •   (princ)
  • )        ;静默退出










回复

使用道具 举报

 楼主| 发表于 2019-1-22 17:00 | 显示全部楼层
运行不下去啊?
回复

使用道具 举报

发表于 2019-1-22 17:36 | 显示全部楼层
bai2000 发表于 2019-1-22 17:00
运行不下去啊?

有个变量搞错了,上面已经修改,你再试试
回复

使用道具 举报

 楼主| 发表于 2019-1-23 09:36 | 显示全部楼层
我有加了几根线,怎么运行不下去了,怎么要改?


(defun c:blhy ()
  (command "undo" "group")
  (setvar "osmode" 255)
  (setvar "cmdecho" 0)
      (setq p1 (getpoint "\n输入6+12+6中空玻璃及隐框横梁第一点:"))
  (while
    (setq p2 (getpoint p1 "\n输入6+12+6中空玻璃及隐框横梁下一点:")) ang (angle p1 p2)  p2 (polar p2 (+ pi ang) 80))
    (setvar "osmode" 0)
    (command "line" p1 p2 "")
    (setq ang (angle p1 p2))
    (setq ang1 (+ ang (* pi 0.5)))
    (setq ec (entlast))
    (command "change" ec "" "p" "c" 2 "")
    (command "line" (polar p1 ang1 24) (polar p2 ang1 24) "")
    (setq ec1 (entlast))
    (command "change" ec1 "" "p" "c" 2 "")
    (command "line" (polar p1 ang1 1) (polar p2 ang1 1) "")
    (setq ec2 (entlast))
    (command "change" ec2 "" "p" "c" 8 "")
    (command "line" (polar p1 ang1 5) (polar p2 ang1 5) "")
    (setq ec4 (entlast))
    (command "change" ec4 "" "p" "c" 8 "")
    (command "line" (polar p1 ang1 6) (polar p2 ang1 6) "")
    (setq ec5 (entlast))
    (command "change" ec5 "" "p" "c" 2 "")
   (command "line" (polar p1 ang1 18) (polar p2 ang1 18) "")
    (setq ec6 (entlast))
    (command "change" ec6 "" "p" "c" 2 "")
    (command "line" (polar p1 ang1 19) (polar p2 ang1 19) "")
    (setq ec7 (entlast))
    (command "change" ec7 "" "p" "c"  8 "")
    (command "line" (polar p1 ang1 139) (polar p2 ang1 139) "")
    (setq ec8 (entlast))
    (command "change" ec8 "" "p" "c" 8 "ltype" "DASHED2""")
    (command "line" (polar p1 ang1 142) (polar p2 ang1 142) "")
    (setq ec9 (entlast))
    (command "change" ec9 "" "p" "c" 2 "")
    (command "line" (polar p1 ang1 52) (polar p2 ang1 52) "")
    (setq ec10 (entlast))
    (command "change" ec10 "" "p" "c" 2 "")
    (command "line" (polar p1 ang1 55) (polar p2 ang1 55) "")
    (setq ec3 (entlast))
    (command "change" ec3 "" "p" "c" 8 "ltype" "DASHED2" "")
    (command "line" (polar p1 ang1 23) (polar p2 ang1 23) "")
    (setq ec3 (entlast))
    (command "change" ec3 "" "p" "c" 8 "")
   (command  "INSERT" "C:\Program Files\AutoCAD 2012 - Simplified Chinese\Support\dwg\\隐框立柱a.dwg" (polar p2 ang 80) "" "" (polar p2 ang 200))
    (setq p1 (polar p2 ang 160))
    (setvar "osmode" 255)
    (command "undo" "end")
  )  
  (princ)                                ;静默退出
)
回复

使用道具 举报

发表于 2019-1-23 11:02 | 显示全部楼层
(setq p2 (getpoint p1 "\n输入6+12+6中空玻璃及隐框横梁下一点:")) ang (angle p1 p2)  p2 (polar p2 (+ pi ang) 80))
改为:
(setq p2 (getpoint p1 "\n输入6+12+6中空玻璃及隐框横梁下一点:") ang (angle p1 p2)  p2 (polar p2 (+ pi ang) 80))
回复

使用道具 举报

 楼主| 发表于 2019-1-23 14:10 | 显示全部楼层
谢楼上,完全符合要求,弱弱的问下:怎么在第一次点击是插入块“A”,在最后一次点击确定时插入块“c”(或最后一个块替换为块“c”)
回复

使用道具 举报

发表于 2019-1-23 16:24 | 显示全部楼层
(defun c:blhy ()
  (command "undo" "group")
  (setvar "osmode" 255)
  (setvar "cmdecho" 0)
      (setq p1 (getpoint "\n输入6+12+6中空玻璃及隐框横梁第一点:"))
        (command  "INSERT" "C:\\Users\\Administrator\\Desktop\\A"  p1 "" "" (polar p1 0 200))
  (while
    (/= (setq p2 (getpoint p1 "\n输入6+12+6中空玻璃及隐框横梁下一点:")) nil)
                (setq        ang (angle p1 p2)  p2 (polar p2 (+ pi ang) 80))
    (setvar "osmode" 0)
    (command "line" p1 p2 "")
    (setq ang (angle p1 p2))
    (setq ang1 (+ ang (* pi 0.5)))
    (setq ec (entlast))
    (command "change" ec "" "p" "c" 2 "")
    (command "line" (polar p1 ang1 24) (polar p2 ang1 24) "")
    (setq ec1 (entlast))
    (command "change" ec1 "" "p" "c" 2 "")
    (command "line" (polar p1 ang1 1) (polar p2 ang1 1) "")
    (setq ec2 (entlast))
    (command "change" ec2 "" "p" "c" 8 "")
    (command "line" (polar p1 ang1 5) (polar p2 ang1 5) "")
    (setq ec4 (entlast))
    (command "change" ec4 "" "p" "c" 8 "")
    (command "line" (polar p1 ang1 6) (polar p2 ang1 6) "")
    (setq ec5 (entlast))
    (command "change" ec5 "" "p" "c" 2 "")
   (command "line" (polar p1 ang1 18) (polar p2 ang1 18) "")
    (setq ec6 (entlast))
    (command "change" ec6 "" "p" "c" 2 "")
    (command "line" (polar p1 ang1 19) (polar p2 ang1 19) "")
    (setq ec7 (entlast))
    (command "change" ec7 "" "p" "c"  8 "")
    (command "line" (polar p1 ang1 139) (polar p2 ang1 139) "")
    (setq ec8 (entlast))
    (command "change" ec8 "" "p" "c" 8 "ltype" "DASHED2""")
    (command "line" (polar p1 ang1 142) (polar p2 ang1 142) "")
    (setq ec9 (entlast))
    (command "change" ec9 "" "p" "c" 2 "")
    (command "line" (polar p1 ang1 52) (polar p2 ang1 52) "")
    (setq ec10 (entlast))
    (command "change" ec10 "" "p" "c" 2 "")
    (command "line" (polar p1 ang1 55) (polar p2 ang1 55) "")
    (setq ec3 (entlast))
    (command "change" ec3 "" "p" "c" 8 "ltype" "DASHED2" "")
    (command "line" (polar p1 ang1 23) (polar p2 ang1 23) "")
    (setq ec3 (entlast))
    (command "change" ec3 "" "p" "c" 8 "")
    (command  "INSERT" "C:\\Users\\Administrator\\Desktop\\隐框立柱a.dwg" (polar p2 ang 80) "" "" (polar p2 ang 200))
                (setq bl (entlast))
    (setq p1 (polar p2 ang 160))
    (setvar "osmode" 255)
    (command "undo" "end")
  ) ;while
  (command  "INSERT" "C:\\Users\\Administrator\\Desktop\\C"  (cdr (assoc 10 (entget bl))) "" "" p1 "ERASE" bl "")
       
  (princ)                                ;静默退出
)


在循环前面插入A块,在循环之后更换C块,应该差不多了,剩下的细节你自己完善吧
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 08:03 , Processed in 2.171399 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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