明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5281|回复: 9

绘制云线源码

    [复制链接]
发表于 2012-1-20 02:06:25 | 显示全部楼层 |阅读模式
本帖最后由 langjs 于 2012-1-20 12:41 编辑

一个小小的程序,没啥难度,中间的那个while循环还是有点意思的。
自己觉得手感还不错,就发上来给大家看看


;;; 绘制矩形云线     命令:yun       by:langjs
;;; __________________________________________
(princ "\n 绘制矩形云线 命令:yun")
(defun c:yun (/ #err99 $orr c pt pt2 r snap)
  (defun #err99 (s)
    (command ".UNDO" "E")
    (setvar "CECOLOR" c)
    (setvar "OSMODE" snap)
    (setq *error* $orr)
  )
  (setq $orr *error*)
  (setq *error* #err99)
  (setvar "CMDECHO" 0)
  (command ".UNDO" "BE")
  (setvar "OSMODE" 0)
  (setq c (getvar "CECOLOR")
snap (getvar "OSMODE")
  )
  (while (progn
    (if (null rbak)
      (setq rbak (* 0.8 (getvar "DIMSCALE") (getvar "DIMTXT")))
    )
    (initget "A C ")
    (if (= (setq pt (getpoint "\n指定第一个角点或 [弧长(A)/颜色(C)]:"))
    "A"
        )
      (setq r (getreal (strcat "\n指定弧长 <" (rtos rbak 2 3) ">:")))
      (if (= pt "C")
        (setq cdbak (cdr (car (acad_truecolordlg '(62 . 1)))))
      )
    )
    (not (= (type pt) 'list))
  )
  )
  (if r
    (setq rbak r)
  )
  (if cdbak
    (command "color" cdbak)
    (command "color" 1)
  )
  (while (not (setq pt2 (getcorner pt "\n指定另一个角点:"))))
  (command "_rectang" pt pt2)
  (command "_revcloud" "A" rbak rbak "O" "" (entlast) "N")
  (setvar "CECOLOR" c)
  (setvar "OSMODE" snap)
  (command ".UNDO" "E")
  (setq *error* $orr)
  (princ)
)

评分

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

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2012-1-20 08:20:47 | 显示全部楼层
不好意思 我点支持结果点错了
发表于 2012-1-20 10:11:11 | 显示全部楼层
revcloud命令后直接点对象不就行了吗?
发表于 2012-1-20 10:32:30 | 显示全部楼层
感谢 langjs 楼主分享学习!
发表于 2012-1-20 17:15:37 | 显示全部楼层
谢谢楼主, 收藏学习
发表于 2012-4-14 10:19:57 | 显示全部楼层
langjs 楼主,程序在设定颜色时,选“bylayer”出错误,能否请大师修改!

点评

(if (= cdbak 256) (setq cdbak "BYLAYER") )  发表于 2012-4-14 10:31
发表于 2012-4-16 10:00:02 | 显示全部楼层
按照langjs 楼主的提示,已解决。谢谢!
发表于 2013-8-28 21:12:08 | 显示全部楼层
程序在设定颜色时,选“bylayer”出错误。是否将:
      (if (= pt "C")
      (setq cdbak (cdr (car (acad_truecolordlg '(62 . 1)))))
修改为:
      (if (= cdbak 256)
      (setq cdbak "BYLAYER") )  
请langjs大师,最好能将1楼的内容更新下,就好啦!
发表于 2019-12-17 17:58:23 | 显示全部楼层
不错支持支持!
发表于 2020-1-3 10:29:28 | 显示全部楼层
谢谢楼主的分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-10-2 05:05 , Processed in 0.185802 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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