Author Topic: Detail routine  (Read 4214 times)

0 Members and 1 Guest are viewing this topic.

CAB

  • Global Moderator
  • Seagull
  • Posts: 10401
Re: Detail routine
« Reply #15 on: July 17, 2012, 03:37:06 PM »
This is 2006, if VLIDE is active it shows the command pause as the source of the error.

Code: [Select]
Command: aarc
*Invalid*
; error: Function cancelled
I've reached the age where the happy hour is a nap. (°¿°)
Windows 10 core i7 4790k 4Ghz 32GB GTX 970
Please support this web site.

Lee Mac

  • Seagull
  • Posts: 12914
  • London, England
Re: Detail routine
« Reply #16 on: July 17, 2012, 04:46:19 PM »
This is 2006, if VLIDE is active it shows the command pause as the source of the error.

Code: [Select]
Command: aarc
*Invalid*
; error: Function cancelled

Thanks. Since the error cannot be detected by the program whilst the Arc command takes focus, I think the best solution is to equip the program with a simple error handler.

Code updated.

Biscuits

  • Swamp Rat
  • Posts: 502
Re: Detail routine
« Reply #17 on: July 18, 2012, 08:48:44 AM »
Yup I did miss a line of code. Works very well now! Thank you.
I'll check into the "dynamic attributed block" idea. It's about time we tried using dynamic blocks anyway.

Thanks everyone, for all the help & suggestions!

Biscuits

  • Swamp Rat
  • Posts: 502
Re: Detail routine
« Reply #18 on: July 19, 2012, 02:33:40 PM »
Just thought I would let everyone know, I was able to find and old copy of the "missing" routine.
And we're back in action again. Many thanks for all the help! Any who wish to use this are free to do so.

Code: [Select]
(defun C:DETL
         (/ ANG02    ANG021   ANG022    CLAY    CORM    COSM
            DETN      DSCL      PNT01       PNT02  PNT021  PNT022
           PNT023    PNT024  RAD01       RAD02  RAD03    LTSC
         )
                 ; DEFINE VARIABLES
                 ; ANG02 = ANGLE, PNT01 TO PNT02
                 ; CLAY = CURRENT LAYER
                 ; CORM = CURRENT ORTHO MODE
                 ; COSM = CURRENT OSNAP MODE
                 ; DETN = DETAIL NAME
                 ; DSCL = DIMSCALE
                 ; PNT01 = CENTER OF VIEW CIRCLE
                 ; PNT02 = LOCATION OF VIEW NAME
                 ; RAD01 = DISTANCE, PNT01 TO PNT02
                 ; RAD02 = DIMSCALE TIMES DETAIL ARROWHEAD SIZE
                 ; RAD03 = DIMSCALE TIMES TEXT HIGHT
                 ; LTSC = LTSCALE

  (setq   CLAY (getvar "CLAYER")
            CORM (getvar "ORTHOMODE")
            COSM (getvar "OSMODE")
            DSCL (getvar "DIMSCALE")
            LTSC (getvar "LTSCALE")
  )
  (setvar "CMDECHO" 0)
  (command "._-LAYER" "_NEW" "SECTION" "_COLOR" 230 "SECTION" "_LTYPE" "PHANTOM" "SECTION" "")
  (setvar "ORTHOMODE" 0)
  (setvar "OSMODE" 0)

  (setq    PNT01 (getpoint "\nPick center of View Circle: ")
             PNT02 (getpoint PNT01 "\nPick location of View Name: ")
             DETN  (getstring 2 "\nDetail Name? ")
             ANG02 (angle PNT01 PNT02)
             RAD01 (distance PNT01 PNT02)
             RAD02 (* DSCL 0.140625)
             RAD03 (* DSCL 0.09375)

  )
  (command "._LAYER" "_SET" "0" "" "._CIRCLE" PNT01 PNT02 "._CIRCLE" PNT02 RAD02)

       ;;   Set layer to 0 and draw the detail circle and a circle on the
       ;; circumference of the detail circle having a radius equal to 1.5
       ;; times the standard character hite (i.e., 9/64").  Record points,
       ;; angles, & distances involved.

  (setq    PNT021 (polar PNT02 (+ ANG02 (* pi 0.5)) RAD02)
             PNT021 (osnap PNT021 "APP")
             ANG021 (angle PNT01 PNT021)
             PNT022 (polar PNT02 (+ ANG02 (* pi 1.5)) RAD02)
             PNT022 (osnap PNT022 "APP")
             ANG022 (angle PNT01 PNT022)
  )
  ;; Get both points where the two circles intersect, & record the points
  ;; and the angles relative to the center of the large circle.
 
(command "._MOVE" "_LAST" "" PNT02 PNT021)

  (setq    PNT023 (polar PNT021 (+ ANG021 (* pi 0.5)) RAD02)
              PNT023 (osnap PNT023 "APP")
  )
  ;;   Shift the small circle counterclockwise one character height &
  ;; determine where one of the arrowheads will end

  (command "._MOVE" "_LAST" "" PNT021 PNT022)

  (setq    PNT024 (polar PNT022 (+ ANG022 (* pi 1.5)) RAD02)
             PNT024 (osnap PNT024 "APP")
  )

  ;; then shift it two character hights clockwise & get the endpoint
  ;; of the other arrowhead.




 (command "._ERASE" "_LAST" ""
                   "._CIRCLE" PNT02 PNT023
                   "._TRIM" "_LAST" "" PNT02 ""
                   "._ERASE" "_PREVIOUS" ""
;        "._PEDIT" "LAST" "YES" ""
                   "._CHANGE" "_LAST" "" "_PROPERTIES" "_LAYER" "SECTION" ""
                   "._LAYER" "SET" "SECTION" ""
                   "._PLINE" PNT021 "_WIDTH" 0.0 (* RAD02 0.38196601) PNT023 ""
                   "._MIRROR" "_LAST" "" PNT01 PNT02 "_NO"
                   ".-STYLE" "STANDARD" "ROMANS" "0" "1" "0" "N" "N" "N"
                   "._TEXT" "MC" PNT02 RAD03 0.0 (strcase DETN)
                   "._LAYER" "_SET" CLAY "")                  ;
  (princ)
)

cmwade77

  • Swamp Rat
  • Posts: 1443
Re: Detail routine
« Reply #19 on: July 19, 2012, 07:42:26 PM »
Just saying that with careless snapping you can pick start & end as the same point & routine crashes.
No big deal, just start over. I know the routine is not fool prof.  :-)
Even with routines that are fool proof, never underestimate the ingenuity of a fool.

CAB

  • Global Moderator
  • Seagull
  • Posts: 10401
Re: Detail routine
« Reply #20 on: July 25, 2012, 08:37:02 AM »
Funny you should say that. I have a buddy who is no fool but unpredictable.
I used to have him test my FoxBASE routines and he did find the chinks in the armor.  8-)
I've reached the age where the happy hour is a nap. (°¿°)
Windows 10 core i7 4790k 4Ghz 32GB GTX 970
Please support this web site.