明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6123|回复: 5

[基础] 南方CASS,生成界址点程序,感觉自带的不好用。

[复制链接]
发表于 2011-6-10 15:59 | 显示全部楼层 |阅读模式
本帖最后由 zhb236623 于 2011-6-10 16:01 编辑

选中闭合PLINE,不管闭合PLINE是顺时针还是逆时间方向,始终按顺时针方向画界址点。界址点的顺序可以自定义从哪点开始。利用http://bbs.mjtd.com/thread-85286-1-1.html
http://bbs.mjtd.com/thread-86881-1-1.html
  1. ;;复合线转为权属线,画界址点....
  2. ;;1.选pline,指定界址点起始点,其他按提示完成命令
  3. (defun C:po(/ ss fd ang offsetObj plineObj)
  4. (VL-LOAD-COM)
  5. (if (setq ss (ssget ":s" '((0 . "*POLYLINE"))))
  6.    (progn
  7.     (setq plineObj (vlax-ename->vla-object (ssname ss 0)))
  8.     ;(setq fd (vlax-curve-getFirstDeriv plineObj 0.5))
  9.     ;(setq ang (atan (/ (cadr fd) (car fd))))
  10.     (setq offsetplineObj (car (vlax-safearray->list
  11.       (vlax-variant-value
  12.         (vla-OFFSET plineObj 0.0001)))))
  13.     (if (> (vlax-curve-getdistatparam
  14.            plineobj
  15.            (vlax-curve-getEndParam plineobj)
  16.          ) ;_ 结束vlax-curve-getdistatparam
  17.          (vlax-curve-getdistatparam
  18.            offsetplineObj
  19.            (vlax-curve-getEndParam offsetplineObj)
  20.          ) ;_ 结束vlax-curve-getdistatparam
  21.       )
  22.        (princ "\n该多义线为顺时针。")
  23.        (command "huan" ss)
  24.     )
  25.     (vla-delete offsetplineObj)
  26.    );progn
  27.    (princ "\n没有选择多段线.")
  28. );end_if
  29. (wwww)
  30. (setq ssss(ssget "p"))
  31. (command "PLTOJZLINE" ssss )

  32. )

  33. (defun wwww()
  34. ;;(princ"按指定点作为起点重绘pline.     ")
  35. (VL-LOAD-COM)
  36. ;;(setvar "cmdecho" 0)
  37. (setq sss(ssget "p"))
  38. (setq ee (ssname sss 0))
  39. ;(setq ee(car(entsel"选择对象")))
  40. (setq p1(getpoint"选择顶点"))
  41. (plchangestart ee p1)

  42. )

  43. (defun plchangestart(ee p1 / pt dat ptfrst ename aa data datb dat0 dat1 dat9)
  44.   (setq pt (list (car p1) (cadr p1)))
  45.   (setq dat (entget ee))
  46.   (setq ptfrst (cons 10 pt))
  47.   (setq ename (vlax-ename->vla-object ee))
  48.   (if (vlax-curve-isclosed ename)
  49.     (setq dat dat)
  50.     (progn (setq dat (subst (cons 70 129) (assoc 70 dat) dat))
  51.      (setq data (list (last dat)))
  52.      (setq datb (reverse (cdr (cdr (cdr (cdr (cdr (reverse dat))))))))
  53.      (setq dat (entmod (append datb data)))
  54.     ) ;_ 结束progn
  55.   ) ;_ 结束if
  56.   ;;以上一段:如果pl最终不是以“c”闭合而是以捕捉端点方式“闭合”,
  57.   ;;则修改组码使其达到闭合效果。
  58.   (setq  dat0 (reverse (member (assoc 39 dat) (reverse dat)))
  59.   dat1 (cdr (member (assoc 39 dat) dat))
  60.   dat9 (list (last dat1))
  61.   dat1 (reverse (cdr (reverse dat1)))
  62.   data (member ptfrst dat1)
  63.   datb (reverse (cdr (member ptfrst (reverse dat1))))
  64.   ) ;_ 结束setq
  65. (entmod (append dat0 data datb dat9))

  66.   ;;以上一段:修改组码,使pline从指定点开始。
  67. ) ;_ 结束defun

发表于 2013-2-27 11:04 | 显示全部楼层
好东西!呵呵!
发表于 2016-10-11 20:47 | 显示全部楼层
huan 未知命令“HUAN”  没用过cass  请问楼主 命令huan  是什么
发表于 2019-9-26 17:02 来自手机 | 显示全部楼层
看看好用不
发表于 2019-10-18 14:54 | 显示全部楼层
异常完美,感谢解决了一个长期困扰的问题..........
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-15 05:53 , Processed in 0.262013 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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