我试着从一个动态块中取两个角度。然后按给定量改变角度,并将角度反馈回动态块。我意识到我的一些代码是多余的,可以清理,但我用它来解决问题。
我认为问题在于将角度反馈到块中。它可能必须采用不同的格式。
我从我的公司已经用于更改动态块的长度变量的一些现有代码中修改了此代码。(这部分有效!)
此外,我还意识到可能缺少一些组件。
- ;Adjust Bracing Block by Increments
- (defun C:ISATBRACEBUMP()
- (vl-load-com)
- (if (= (vl-registry-read "HKEY_CURRENT_USER\\Datum" "Datum-Elev") nil)
- (progn
- (princ "\n== SET DATUM ELEVATION FIRST ==\n")
- )
- (progn
- (setq RX (ssget '((0 . "INSERT"))))
- (setq LE_RX (sslength RX))
- (setq A 0)
- (repeat LE_RX
- (setq ANGMODAMT 5) ; this will be ajustable later.
- (setq ANGBRACES (SSNAME RX A))
- (setq oBkRef (vlax-ename->vla-object ANGBRACES))
- (setq SEIS_ANG_R_1 (getdynpropvalue OBkRef "Angle"))
- (setq SEIS_ANG_D_1 (RTD SEIS_ANG_R_1))
- (setq SEIS_ANG_R_2 (getdynpropvalue OBkRef "Angle1"))
- (setq SEIS_ANG_D_2 (RTD SEIS_ANG_R_2))
- (setq SEIS_ANG_D_1_M (+ SEIS_ANG_D_1 ANGMODAMT))
- (setq SEIS_ANG_D_2_M (+ SEIS_ANG_D_2 ANGMODAMT))
- (setq SEIS_ANG_R_1_M (DTR SEIS_ANG_D_1_M))
- (setq SEIS_ANG_R_2_M (DTR SEIS_ANG_D_2_M))
- (princ SEIS_ANG_R_1_M)
- (princ SEIS_ANG_R_2_M)
- (chgdynprop oBkRef "Angle" getangl(SEIS_ANG_R_1_M))
- (chgdynprop oBkRef "Angle1" SEIS_ANG_R_2_M)
- (princ)
-
- (SETQ A (+ A 1))
- )
-
- )
- )
- )
- ;DUPLICATE TEXT - TO BE REMOVED WHEN INCORPORATED INTO MASTER TEXT
- (defun dtr (a)
- (* pi (/ a 180.0))
- )
- (DEFUN RTD (A)
- (/ (* A 180.0) PI)
- )
- (defun getdynprops (obj / v)
- (mapcar '(lambda (x)
- (if (setq v (vlax-variant-value (vla-get-value x)))
- (cons (vla-get-propertyname x) v)))
- (vlax-invoke obj 'getdynamicblockproperties)
- )
- );defun http://www.theswamp.org/index.php?topic=22663.0
- (defun getdynpropvalue (obj name / v)
- (cdr (assoc name
- (mapcar '(lambda (x)
- (if (setq v (vlax-variant-value (vla-get-value x)))
- (cons (vla-get-propertyname x) v)))
- (vlax-invoke obj 'getdynamicblockproperties))))
- );defun
|