KO你
发表于 2019-2-19 00:00:03
没人帮忙吗
1291500406
发表于 2019-3-20 09:48:37
这个自己写一个吧,简单
路宁宁
发表于 2019-3-20 12:34:42
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=85005&highlight=%CC%EE%B3%E4
1291500406
发表于 2019-3-20 14:29:42
这个没有动态角度显示
KO你
发表于 2019-3-20 17:33:30
本帖最后由 KO你 于 2019-3-20 17:34 编辑
路宁宁 发表于 2019-3-20 12:34
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=85005&highlight=%CC%EE%B3%E4
这个帖子很早就看过了,用起来不是很快捷,想要的填充旋转可以输入值的,还有填充移动动态的
KO你
发表于 2019-3-20 19:07:57
1291500406 发表于 2019-3-20 14:29
这个没有动态角度显示
请大师帮忙完善
http://bbs.mjtd.com/thread-179108-1-1.html
e2002
发表于 2019-3-20 21:01:28
个人以为这类使用 greead的动态,由于grread函数自身的局限,无法做到精确定位,在很多场合并没有多少实际意义。如果操作不需要精确定位时,用用这个,也就是花哨些;作为练练LISP编程技术,理解和掌握grread函数,差不多也就可以了。
就楼主这要求,我直接拖动,rotate,move命令或者grid操作等都能完成,而且还能精确定位,精确角度,也是一样动态显示。
1291500406
发表于 2019-3-21 16:33:48
本帖最后由 1291500406 于 2019-3-22 18:04 编辑
Dynamic ToolPack Family DynamicHatch V1.6.90210#TRINNOLOV3.2009
KO你
发表于 2019-3-22 19:03:11
1291500406 发表于 2019-3-22 18:00
Dynamic ToolPack Family DynamicHatch V1.6.90210#TRINNOLOV3.2009
功能很强大,但操作起来不是很快捷,最好还是填充旋转独立一个,其他又是各一个,分开好点
KO你
发表于 2019-3-22 19:06:38
1291500406 发表于 2019-3-22 18:00
Dynamic ToolPack Family DynamicHatch V1.6.90210#TRINNOLOV3.2009
帖子上可以找到填充的比例缩放 个人还是觉得分开用起来快捷又方便
;;快捷键hs填充动态比例缩放
;;填充动态比例(only patternscale)
;;code by edata @mjtd
(defun c:hs(/ C_SCALE DS ENT GR MPT OBJ P1 P3 SCREEN_H SCREEN_PT SS TEXT_DS X Y loop scale_p)
(vl-load-com)
(vla-StartUndoMark (vla-get-activedocument(vlax-get-acad-object)))
;;Get viewpt Sub function from bbs.mjtd.com
(defun viewpt(/ a b c d x)
(setq b (getvar "viewsize") c (car (getvar "screensize")) d (cadr (getvar "screensize"))
a (* b (/ c d)) x (setq x (getvar "viewctr")) x (trans x 1 2) c (list (- (car x)(/ a 2.0)) (- (cadr x) (/ b 2.0)) 0.0)
d (list (+ (car x) (/ a 2.0)) (+ (cadr x) (/ b 2.0)) 0.0) c (trans c 2 1) d (trans d 2 1)
)
(list c d)
)
;;End Sub function
;;Start main function
(if(and (setq ss(ssget ":S" '((0 . "hatch"))))
(setq ent(ssname ss 0))
(car(list t (redraw ent 3))))
(progn
(setq obj (vlax-ename->vla-object ent)
screen_pt(viewpt)
screen_h(abs(- (cadr(cadr screen_pt))(cadr(car screen_pt))))
loop t)
(vla-GetBoundingBox obj 'p1 'p3)
(setq p1 (vlax-safearray->list p1)
p3 (vlax-safearray->list p3)
mpt(mapcar '(lambda(x y)(*(+ x y ) 0.5)) p1 p3)
c_scale(vla-get-patternscale obj)
text_ds(vlax-ename->vla-object(entmakex (list '(0 . "TEXT")(cons 62 4) (cons 1 (strcat "当前比例为: "(rtos c_scale 2)) ) (cons 10 mpt) (cons 40 (* screen_h 0.04))))))
(prompt "\n移动鼠标或输入S比例数字(如s100):")
(while (and loop (setq gr(grread t 15 0))(not (or(= (car gr) 3)(= (car gr) 25)(= (car gr) 11)(equal gr '(2 13))(equal gr '(2 32)))))
(cond
((= (car gr) 5)(setq p1(cadr gr))
(if(>(setq ds(distance mpt p1))0)(vla-put-patternscale obj (* ds 0.1)))
;(vla-put-patternangle obj (angle mpt p1));改角度
(setq screen_pt(viewpt)
screen_h(abs(- (cadr(cadr screen_pt))(cadr(car screen_pt)))))
(vla-put-insertionpoint text_ds (vlax-3d-point p1))
(vla-put-height text_ds (* screen_h 0.04))
(vla-put-textstring text_ds (strcat "当前比例为: "(rtos (* ds 0.1) 2)))
(vla-update obj)
(vla-update text_ds)
(redraw)
(grdraw mpt p1 1 3)
)
((equal gr '(2 115)) (setq loop nil)(if(setq scale_p(getreal "\n输入比例:s"))(vla-put-patternscale obj scale_p)(vla-put-patternscale obj c_scale)))
)
(entmod (entget ent))
(entmod (entget (vlax-vla-object->ename text_ds)))
)
(and text_ds(vla-delete text_ds))
(and text_ds(vlax-release-object text_ds))
(and obj(vlax-release-object obj))
)
)
(vla-EndUndoMark (vla-get-activedocument(vlax-get-acad-object)))
(redraw)
(princ)
)
(prompt "loading dynamic patternscale code by edata,Command istt")
(princ)