yoin

EddyBeerke

Hoe vind ik dit object "AcDbHatch(D29E5)"?

Wat ik wil is dat ik met lisp dit object (een hatch in dit geval) selecteer en er iets mee kan doen, bv hatchedit.

Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

roy_043

Als D29E5 de handle van de hatch entiteit is dan kun je m.b.v. (handent "D29E5") de entity name verkrijgen. Deze entity name kun je gebruiken om de hatch te selecteren.

Joop

De onderstaande routine gebruik ik om alle relevante hatch-data te verzamelen.
Daarna is het, hoop ik, een kwestie van filteren op jouw hatch-object.
De output van deze routine is een lijst van alle in de tekening aanwezige hatches met alle gegevens om de hatches opnieuw te kunnen tekenen.
Voorzover ik kan nagaan betekent "AcDbHatch(D29E5)" dat de hatch in de in de database staat onder de handle D29E5 (dxf code 5).
;;;*=====================================================================
;;; Extract Hatch data uit tekening =
;;;*=====================================================================
(defun GetHatchData (/)
 ;;--- Start with empty list
 (setq HatchDataList (list))
 (setq Hcntr 0)
 (if (setq SelSet (ssget "X" (list (cons 0 "Hatch"))))
   (progn

     ;;--- Start Show progress
     (setq Message (strcat (itoa (sslength SelSet)) "stuks"))
     (dos_getprogress "Hatch" Message (sslength SelSet) t)

     ;;--- Loop through each entity
     (while (< Hcntr (sslength SelSet))

;;--- Show progress
(dos_getprogress -1)

;;--- Get Unit#
(if (= Hcntr 0)
 (setq HatchUnit# "0")
 (setq HatchUnit# (itoa Hcntr))
)


;;--- Get the entity's name
(setq HatchName (ssname SelSet Hcntr))

;;--- Retrieve the hatch reference
(setq NextHatch (vlax-ename->vla-object HatchName))

;;--- Get handle
(setq HatchHandle (vla-get-handle NextHatch))


;;--- Get layer
(setq HatchLayer (vla-get-layer NextHatch))

;;--- Get color
(setq HatchColor (rtos (vla-get-color NextHatch)))

;;--- Get linetype
(setq HatchLinetype (vla-get-linetype NextHatch))

;;--- Get lineweight
(setq HatchLineweight (rtos (vla-get-lineweight NextHatch)))

;;--- Get linetypescale
(setq HatchLinetypeScale (rtos (vla-get-linetypescale NextHatch)))

;;--- Get number of loops
(setq HatchNumberOfLoops (rtos (vla-get-numberofloops NextHatch)))

;;--- Get patern data
(setq HatchPatternAngle (rtos (vla-get-patternangle NextHatch))
     HatchPatternDouble (vla-get-patterndouble NextHatch)
     HatchPatternName (vla-get-patternname NextHatch)
     HatchPatternScale (rtos (vla-get-patternscale NextHatch))
     HatchPatternSpace (rtos (vla-get-patternspace NextHatch))
     HatchPatternType (rtos (vla-get-patterntype NextHatch))
)

;;--- Get pen width
(setq HatchISOPenWidth (rtos (vla-get-isopenwidth NextHatch)))

;;--- Get object type
(setq HatchObjectType (rtos (vla-get-hatchobjecttype NextHatch)))

;;--- Get hatch style
(setq HatchStyle (rtos (vla-get-hatchstyle NextHatch)))

;;--- Get associativity
(setq HatchAssociative (vla-get-associativehatch NextHatch))

;;; ;;--- Get gradient
;;; (setq HatchGradientAngle
;;; (rtos (vla-get-gradientangle NextHatch))
;;;      HatchGradientName
;;; (vla-get-gradientname NextHatch)
;;; )
;;; (setq HatchGradientColor1
;;;       (vla-get-gradientcolor1 NextHatch)
;;;      HatchGradientColor2
;;;       (vla-get-gradientcolor2 NextHatch)
;;; )
;;; (setq HatchGradientCentered (vla-get-gradientcentered NextHatch))

;;--- Make List one Hatch
(setq RestData (list
HatchUnit# HatchHandle       HatchLayer      HatchColor
HatchLinetype HatchLineweight       HatchLinetypeScale     HatchNumberOfLoops
HatchPatternAngle HatchPatternDouble     HatchPatternName      HatchPatternScale
HatchPatternSpace HatchPatternType       HatchISOPenWidth      HatchObjectType
HatchStyle HatchAssociative
;;; HatchGradientAngle HatchGradientColor1 HatchGradientColor2
;;; HatchGradientCentered
)
)
(setq RestData (TuneList RestData))
;;--- Make List all Hatchs
(setq HatchDataList (append HatchDataList (list RestData)))

(setq Hcntr (1+ Hcntr))
     )
   )
 )

 ;;--- End Show progress
 (dos_getprogress t)

 HatchDataList
)

Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

EddyBeerke

Citaat van: Joop op do 27 05 2010, 12:23:49
...
Voorzover ik kan nagaan betekent "AcDbHatch(D29E5)" dat de hatch in de in de database staat onder de handle D29E5 (dxf code 5).
...

Joop, bedankt alvast.

Maar hoe krijg ik het voor elkaar om in dit geval de hatch geselecteerd op het beeldscherm te krijgen alsof ik het zelf heb aangeklikt/ geselecteerd ?
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

EddyBeerke

Ik krijg met de code hier onder deze melding:
"; error: no function definition: DOS_GETPROGRESS"

Dit heeft zeker te maken met DOSLib?
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

roy_043

Citaat van: EddyBeerke op do 27 05 2010, 12:39:09hoe krijg ik het voor elkaar om in dit geval de hatch geselecteerd op het beeldscherm te krijgen alsof ik het zelf heb aangeklikt/ geselecteerd ?
(sssetfirst nil (ssadd (handent "D29E5")))

Joop

Dit heeft inderdaad met DosLib te maken.
Deze routine is slechts een van de vele om een autocadtekening in excel te zetten en daarna weer te hertekenen.
Het is gewoon prettig om in de gaten te houden hoever het programma is gevorderd.

Je kunt de regels
    ;;--- Start Show progress
     (setq Message (strcat (itoa (sslength SelSet)) "stuks"))
     (dos_getprogress "Hatch" Message (sslength SelSet) t)


en de regels
 ;;--- End Show progress
 (dos_getprogress t)

uitzetten(;;;) of verwijderen.

Joop
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

EddyBeerke

Citaat van: roy_043 op do 27 05 2010, 12:50:22
(sssetfirst nil (ssadd (handent "D29E5")))

Top!
Ik krijg nu mijn object geselecteerd op mijn scherm.

En Joop ook bedankt, ik ga nog wat stoeien met de code.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

FastFiber