### Author Topic: Hatch by polyline Question  (Read 9581 times)

0 Members and 1 Guest are viewing this topic.

#### ronjonp

• Needs a day job
• Posts: 7168
##### Hatch by polyline Question
« Reply #15 on: August 23, 2005, 07:03:02 PM »
not pretty but this works....

Code: [Select]
(defun c:plh (/  u-plinegen u-clayer u-plinewid *error* drawpline)

;_____________________________
;Error function
;_____________________________

(defun *error* (msg)
(if
(not
(member
msg
'("console break" "Function cancelled" "quit / exit abort" "")
)
)
(princ (strcat "\nError: " msg))
) ; if
(setvar 'plinegen u-plinegen)
(setvar 'clayer u-clayer)
(setvar 'plinewid u-plinewid)
(princ)
) ;end error function

;_____________________________
;Function to draw polyline
;_____________________________

(defun drawpline (/)
(command "_.pline")
;;   repeat a point input until Enter
(if (while (> (getvar "CMDACTIVE") 0)
(command pause)
)
(*error* "")
)
)

;_____________________________
;Get User Variables
;_____________________________

(setq u-plinegen (getvar 'plinegen)
u-clayer   (getvar 'clayer)
u-plinewid (getvar 'plinewid)
)

(if (tblsearch "layer" "mylayer")
(command "-layer" "thaw" "mylayer" "on" "mylayer" "")
)
(setvar 'plinegen 1)
(setvar 'plinewid (* (getvar "dimscale") 0.025))
(command "_.-Layer" "_Make" "mylayer" "_L" "hidden2" "" "_Color" "4" "" "")
(drawpline)
(command ".hatch" "ANSI31" "1" "45" "last" "")

;_____________________________
;Reset User Variables
;_____________________________

(setvar 'plinegen u-plinegen)
(setvar 'clayer u-clayer)
(setvar 'plinewid u-plinewid)

)

Windows 10 x64 - AutoCAD /C3D 2020

Custom Build PC

#### CAB

• Global Moderator
• Seagull
• Posts: 10388
##### Hatch by polyline Question
« Reply #16 on: August 23, 2005, 07:15:30 PM »
Well I tried to use MP's subroutine to draw the pline first but got an error

Entity handle:162A9 caused this error: Invalid number of parametersEntity
handle:16A33 caused this error: Invalid number of parameters

Anyway here is my febal attempt

;;  Draw a polyline then it auto hatches it
;;  No error checking on my code
Code: [Select]
(defun c:phatch (/ elast space)

;;  sub by MP
(defun _HatchIt (space object / hatch err)
(setq err
(vl-catch-all-apply
'(lambda ()
(setq hatch
(vlax-invoke
;; pattern type
"ANSI31"
;; pattern name
:vlax-false
;; associativity
AcHatchObject
;; hatch object type
)
)
(vlax-invoke
hatch
'AppendOuterLoop
(list object)
)
(vlax-invoke hatch 'Evaluate)
)
)
)
(if (vl-catch-all-error-p err)
(princ
(strcat
"Entity handle:"
(vla-get-handle object)
" caused this error: "
(vl-catch-all-error-message err)
)
)
)
)

(setq elast (entlast))
(prompt "\nDraw area to hatch, use C to close area.")
;;   repeat a point input until Enter
(command "PLINE")
(while (> (getvar "CMDACTIVE") 0)
(command pause)
)
(if (and (/= (entlast) elast)
(= (cdr (assoc 0 (entget (entlast)))) "LWPOLYLINE")
)
(progn
(setq space
(vlax-get-property
(vlax-get-property
'ActiveDocument
)
(if (eq 1 (getvar "cvport"))
'PaperSpace
'ModelSpace
)
)
)
(_HatchIt space (vlax-ename->vla-object (entlast)))
)
)
(princ)
)
I've reached the age where the happy hour is a nap. (°¿°)
Windows 10 core i7 4790k 4Ghz 32GB GTX 970

#### CAB

• Global Moderator
• Seagull
• Posts: 10388
##### Hatch by polyline Question
« Reply #17 on: August 23, 2005, 07:17:07 PM »
Ron, you snuck in there while I wasn't watchen...
I've reached the age where the happy hour is a nap. (°¿°)
Windows 10 core i7 4790k 4Ghz 32GB GTX 970

#### ronjonp

• Needs a day job
• Posts: 7168
##### Hatch by polyline Question
« Reply #18 on: August 23, 2005, 07:22:13 PM »
Yeah but my look at my hacked together code compared to yours.

Windows 10 x64 - AutoCAD /C3D 2020

Custom Build PC

#### MP

• Seagull
• Posts: 17686
• Have thousands of dwgs to process? Contact me.
##### Hatch by polyline Question
« Reply #19 on: August 23, 2005, 07:24:51 PM »
Works fine under 2004. Hmmm.
Engineering Technologist • CAD Specialist • Programmer Analyst
Design • Drafting • Document Control • Automation.

#### CAB

• Global Moderator
• Seagull
• Posts: 10388
##### Hatch by polyline Question
« Reply #20 on: August 23, 2005, 07:39:10 PM »
Yea, I just cranked up 2004 & my routine using your sub worked fine.

Go figure

By the way, nice code MP
I've reached the age where the happy hour is a nap. (°¿°)
Windows 10 core i7 4790k 4Ghz 32GB GTX 970

#### MP

• Seagull
• Posts: 17686
• Have thousands of dwgs to process? Contact me.
##### Hatch by polyline Question
« Reply #21 on: August 23, 2005, 08:31:35 PM »
This just in: Works in AutoCAD 2006.

I don't have 2002 here at home but maybe I can figure what make it face plant in older versions tomorrow at work (when I can steal a moment or two).
Engineering Technologist • CAD Specialist • Programmer Analyst
Design • Drafting • Document Control • Automation.

#### MP

• Seagull
• Posts: 17686
• Have thousands of dwgs to process? Contact me.
##### Hatch by polyline Question
« Reply #22 on: August 23, 2005, 08:34:04 PM »
Hey -- thanks Alan.
Engineering Technologist • CAD Specialist • Programmer Analyst
Design • Drafting • Document Control • Automation.

#### CAB

• Global Moderator
• Seagull
• Posts: 10388
##### Hatch by polyline Question
« Reply #23 on: August 23, 2005, 08:40:50 PM »
Any time
I've reached the age where the happy hour is a nap. (°¿°)
Windows 10 core i7 4790k 4Ghz 32GB GTX 970

#### Jeff_M

• King Gator
• Posts: 3979
• C3D user & customizer
##### Hatch by polyline Question
« Reply #24 on: August 23, 2005, 10:33:24 PM »
Michael,
This is what fails in 2002:
Code: [Select]
AcHatchObject      ;; hatch object type
This is not a parameter that needs to be set in 2002.....looks like Adesk changed the AddHatch method. From the Help:
Quote

#### MP

• Seagull
• Posts: 17686
• Have thousands of dwgs to process? Contact me.
##### Hatch by polyline Question
« Reply #25 on: August 23, 2005, 10:59:54 PM »
Thanks Jeff, excellent detective work. It's easy to code around this (though coded blind).

I'll try to run this under 2000/2002 tomorrow, hopefully it won't toss too much egg on me face.

Code: [Select]
(defun c:HatchEm ( / *error* _HatchIt _HatchItSub version ss i space )

(cond
(   (> 15 (setq version (atoi (getvar "acadver"))))
;;  shreik! AutoCAD 14 and older
(defun *error* (x) (princ))
(exit)
)
(   (< 15 version)
(defun _HatchItSub ( space )
(vlax-invoke
space
acHatchStyleNormal ;; pattern type
"ANSI31"           ;; pattern name
:vlax-false        ;; associativity
AcHatchObject      ;; hatch object type
)
)
)
(   ;;  AutoCAD 2000 / 2002
(defun _HatchItSub ( space )
(vlax-invoke
space
acHatchStyleNormal ;; pattern type
"ANSI31"           ;; pattern name
:vlax-false        ;; associativity
)
)
)
)

(defun _HatchIt ( space object / hatch err )
(setq err
(vl-catch-all-apply
'(lambda ()
(setq hatch (_HatchItSub space))
(vlax-invoke
hatch
'AppendOuterLoop
(list object)
)
(vlax-invoke hatch 'Evaluate)
)
)
)
(if (vl-catch-all-error-p err)
(princ
(strcat
"Entity handle:"
(vla-get-handle object)
" caused this error: "
(vl-catch-all-error-message err)
)
)
)
)

(cond
(   (setq ss
(ssget
'(   (0 . "lwpolyline,polyline")
(-4 . "&")
(70 . 1)
)
)
)
(setq space
(vlax-get-property
(vlax-get-property
'ActiveDocument
)
(if (eq 1 (getvar "cvport"))
'PaperSpace
'ModelSpace
)
)
)
(repeat (setq i (sslength ss))
(_HatchIt
space
(vlax-ename->vla-object
(ssname ss (setq i (1- i)))
)
)
)
)
)

(princ)

)
Engineering Technologist • CAD Specialist • Programmer Analyst
Design • Drafting • Document Control • Automation.

#### CAB

• Global Moderator
• Seagull
• Posts: 10388
##### Hatch by polyline Question
« Reply #26 on: August 23, 2005, 11:38:50 PM »
That did the trick, works in A2k.
I've reached the age where the happy hour is a nap. (°¿°)
Windows 10 core i7 4790k 4Ghz 32GB GTX 970

#### MP

• Seagull
• Posts: 17686
• Have thousands of dwgs to process? Contact me.
##### Hatch by polyline Question
« Reply #27 on: August 23, 2005, 11:44:17 PM »
Thanks Alan -- If I didn't have a headache I'd optimize it a bit but alas ...

Nonetheless thank you for testing it.

Engineering Technologist • CAD Specialist • Programmer Analyst
Design • Drafting • Document Control • Automation.

#### Jeff_M

• King Gator
• Posts: 3979
• C3D user & customizer
##### Hatch by polyline Question
« Reply #28 on: August 24, 2005, 12:25:15 AM »
Well Michael, you never cease to amaze me. It's late and you have a headache, yet your code always manages to look 10x better than mine AND you manage to throw a bit of humor into your code as well.

I'm glad I could spot the trouble spot rather quickly for you. I was going to offer a solution, nearly the same as yours (I never even would of thought to include the check for < 15...) but it was nearly dinner time and my night to cook. I'm glad you posted before I made it back , you saved me from mangling your code.

#### MP

• Seagull
• Posts: 17686
• Have thousands of dwgs to process? Contact me.
##### Hatch by polyline Question
« Reply #29 on: August 24, 2005, 07:58:09 AM »
You're too generous and humble Jeff! And for the record I've never seen you post mangled code, oh contraire, you've posted a lot of gems. Between your coding skills and a penchant to jump in and help your're not only a great asset but a great friend to swamp folk.

When do we eat?

Engineering Technologist • CAD Specialist • Programmer Analyst
Design • Drafting • Document Control • Automation.