Aller au contenu

Generer N blocs depuis Plines closes / MPolygons


lecrabe

Messages recommandés

 

Hello

 

Je cherche sans trouver une routine Lisp ou VLisp qui traiterait les polylignes 2D closes

Top-Bonus : ou les cercles ou les regions ou les splines closes ou les ellipses closes

ou les MPolygons de Map / Civil

 

pour generer tout simplement N blocs nommes "BL_xxxxxx"

 

Bien entendu, on garde les objets d'origine sans les toucher (idem option Conserver quand on fait un bloc)

 

------ Resume du fonctionnement -----

 

1) Selection classique AutoCAD : filtrage des objets pour ne garder que les polylignes 2D closes et aussi les autres entites closes et si possible les fameux MPOLYGONs (ca serait le top)

 

2) Question : generer les blocs sur le calque courant ou sur le meme calque que la polyligne / MPolygon - Defaut : calque courant

 

3) Si possible - Pour les Polylignes closes / MPolygons / Regions / Splines, le point d'insertion pourrait etre EVENTUELLEMENT le centre de gravite !

Donc si c'est possible, poser la question : 1er point XY de l'entite ou Centre de gravite ?

Sinon le plus simple me semble etre le 1er point X1 Y1 Z1 !

 

4) Creation des blocs sur le BON calque, Nom = "BL_xxxxxx",

Point d'insertion = Point de depart de la Polyligne / Spline / MPolygon / Region, Centre du cercle / ellipse, etc

Echelle = 1 et Rotation = 1

 

Un petit compteur en sortie, indiquant le nombre total de blocs generes ...

 

En esperant que mon CDC / CCTP soit clair !

 

A votre bon coeur :)

Je remercie d'avance le futur createur, Le Decapode

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Qq explicatios :

 

Civil 3D peut drapper sur un Mnt 3D un bloc ou N blocs

Il change le Z du point d’insertion du bloc pour le monter sur le Mnt 3D

 

Donc il faut que je genere des blocs a partir au moins de mes Polylignes closes (c la majorite de mes objets) voire evnetuellement d'autres objets comme par exemple : cercle, MPolygon, etc

 

Les blocs seront nommes "BL_xxxxx" (par exempe) ...

 

Merci d'avance de votre aide, le Decapode

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Non je desire des blocs simples !

 

Idem la manipulation que je fais a la main (par BLOC) pour chaque entite :

- BLOC

- Selectionner l'objet concerne (Polyligne close, Cercle, MPolygon, etc) : UN SEUL objet

- Point d'insertion : accrochage du 1er point de l'objet ou centre du cercle ou etc

- En mode CONSERVER car on garde l'objet original

- Nom du bloc = BL_xxxxx

 

et ainsi de suite en incrementant le nom du bloc ...

 

Merci d'avance, Le Decapode

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Par contre SVP j'aimerais bien une petite question du genre :

Valeur de depart pour l'incremementaion (Defaut =1) : ?

 

Ainsi en lancant plusieurs fois la manipulation, je pourrais avoir un resultat du genre :

BL_00001 - BL_01456 : Blocs des Batis durs

BL_01001 - BL_01378 : Blocs des Batis legers

BL_02001 - BL_02033 : Blocs des Batis municipaux

etc

 

Le Decapode

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Pourrais -tu poster un dessin exemple avec des blocs déjà créés ?

 

generer les blocs sur le calque courant ou sur le meme calque que la polyligne

C'est-à-dire ?

Tu parles du calque sur lequel insérer le bloc ?

Dans un bloc BL_*, la polyligne doit-elle appartenir au calque 0 ? ou au calque d'origine ? Couleur DuCalque ? DuBloc ?

:P

Lien vers le commentaire
Partager sur d’autres sites

 

Hello Bryce

 

Pour un dessin test, tu peux dessiner qq polyignes closes,

voire meme Cercles, MPolygons, etc sur des calques differents

 

Si tu veux des MPolygons, svp tu m'envoies un courriel sur

cadxp at hotmail point fr

 

Rappel : les MPolygons sont parfaitement supportes par AutoCAD et A D T

meme si il n'y a pas les outils pour les construire

(quoique avec le dev specifique de Gilles, c possible) ! :P

 

En principe, on se place toujours sur le caque ZERO pour faire BLOC ou WBLOC ,

ou bien on reste sur un calque XXXX (rarissime)

 

donc IDEM pour la routine, soit on est sur le calque ZERO, soit on est sur le calque XXXX

c le probleme de l'utilisateur ...

 

Mais en effet ta remarque est judicieuse (petit oubli de ma part, sorry)

Voici donc qq precisions :

 

Question : generation des blocs sur le calque courant ou sur le calque d'origine

signifie que l'insertion des futurs blocs se fera soit sur le calque courant, soit sur le calque d'origine de chaque objet selectionne (et traitable par la routine)

 

Bryce, suite a ta remarque judicieuse, une question supplementaire s'avere necessaire :

 

Garder TOUTES les proprietes d'origine (forcage eventuel des couleurs, types de lignes, epaisseurs, etc)

ou bien TOUT forcer en mode DuBloc

valeur par defaut : Garder TOUTES les proprietes d'origine de l'objet

 

Si c'est trop complique a developper, on GARDE TOUTES les proprietes d'origine

car c simple de mettre en DuBloc les objets AVANT de lancer la routine ! :)

 

En esperant avoir repondu correctement, Merci, Le Decapode

 

 

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Lecrabe,

 

Voici un code très succint qui ne traite que les polylignes 2D.

La sélection est à adapter mais ca peut servir comme base de travail.

Le bloc est crée automatiquement.

 

(defun c:npol (/ ss1 i pol pt)
(prompt "\nGénération de blocs sur formes closes")
(vl-load-com)

(setvar "CMDECHO" 0)
(setvar "OSMODE" 0)
(command "SCU" "G")
(setvar "ATTDIA" 0)
(setvar "ATTREQ" 1)

(if (not (tblsearch "LAYER" "BL_POLYLINE")) (command "_layer" "_N" "BL_POLYLINE" "_CO" "7" "BL_POLYLINE" ""))
(setvar "CLAYER" "BL_POLYLINE")
(if (not (tblsearch "BLOCK" "BL_POLYLINE"))
(progn
(alert "Le bloc BL_POLYLINE n'existe pas")

(entmake '((0 . "BLOCK") (2 . "BL_POLYLINE") (70 . 2) (10 0.0 0.0 0.0)))
(entmake '((0 . "ATTDEF")
(67 . 0)
(8 . "0")
(10 0.4 0.575482 0.0)
(40 . 1.0)
(1 . "BL_1")
(50 . 0.0)
(41 . 1.0)
(51 . 0.0)
(7 . "Standard")
(210 0.0 0.0 1.0)
(3 . "Numéro Polyligne ? ")
(2 . "NUM_POLYLIN")
(70 . 0)
)
)
(entmake '((0 . "CIRCLE")
(67 . 0)
(8 . "0")
(10 0.0 0.0 0.0)
(40 . 0.2)
(210 0.0 0.0 1.0)
)
)
(entmake '((0 . "ENDBLK")))
)
)

(setq ss1 (ssget "_X" 
(list
(cons 8 "LIMPAR")
(cons 0 "LWPOLYLINE")
(cons -4 "(cons -4 "&")
(cons 70 1)
(cons -4 "<")
(cons 70 8)
(cons -4 "AND>")
)))


(setq i 0)
(repeat (sslength ss1)
(setq pol (ssname ss1 i))
(setq pt (pline-centroid pol))
(command "_.insert" "BL_POLYLINE" pt 1 1 0 (strcat "BL_" (rtos (1+ i) 2 0)))
(setq i (1+ i))
)

(prompt (strcat "\n" (itoa i) " blocs insérés."))

(setvar "OSMODE" 65)
(setvar "CMDECHO" 1)
(command "SCU" "PR")
(setvar "ATTDIA" 1)
(prin1)
)




;; PLINE-CENTROID
;; Retourne le centre de gravité d'une polyligne (coordonnées SCG)
;;
;; Argument
;; pl : nom d'entité de la polyligne (ename)

(defun pline-centroid (pl / elst lst tot cen p0 p-c cen area)
(setq elst (entget pl))
(while (setq elst (member (assoc 10 elst) elst))
(setq lst (cons (cons (cdar elst) (cdr (assoc 42 elst))) lst)
elst (cdr elst)
)
)
(setq lst (reverse lst)
tot 0.0
cen '(0.0 0.0)
p0 (caar lst)
)
(if (/= 0 (cdar lst))
(setq p-c (polyarc-centroid (cdar lst) p0 (caadr lst))
cen (mapcar '(lambda (x) (* x (cadr p-c))) (car p-c))
tot (cadr p-c)
)
)
(setq lst (cdr lst))
(if (equal (car (last lst)) p0 1e-9)
(setq lst (reverse (cdr (reverse lst))))
)
(while (cadr lst)
(setq area (algeb-area p0 (caar lst) (caadr lst))
cen (mapcar '(lambda (x1 x2) (+ x1 (* x2 area)))
cen
(triangle-centroid p0 (caar lst) (caadr lst))
)
tot (+ area tot)
)
(if (/= 0 (cdar lst))
(setq p-c (polyarc-centroid (cdar lst) (caar lst) (caadr lst))
cen (mapcar '(lambda (x1 x2) (+ x1 (* x2 (cadr p-c))))
cen
(car p-c)
)
tot (+ tot (cadr p-c))
)
)
(setq lst (cdr lst))
)
(if (/= 0 (cdar lst))
(setq p-c (polyarc-centroid (cdar lst) (caar lst) p0)
cen (mapcar '(lambda (x1 x2) (+ x1 (* x2 (cadr p-c))))
cen
(car p-c)
)
tot (+ tot (cadr p-c))
)
)
(trans (list (/ (car cen) tot)
(/ (cadr cen) tot)
(cdr (assoc 38 (entget pl)))
)
pl
0
)
)

;; ALGEB-AREA
;; Retourne l'aire algébrique du triangle défini par 3 points 2D
;; l'aire est négative si les points sont en sens horaire

(defun algeb-area (p1 p2 p3)
(/ (- (* (- (car p2) (car p1))
(- (cadr p3) (cadr p1))
)
(* (- (car p3) (car p1))
(- (cadr p2) (cadr p1))
)
)
2.0
)
)

;; TRIANGLE-CENTROID
;; Retourne le centre de gravité d'un trinagle défini par 3 points

(defun triangle-centroid (p1 p2 p3)
(mapcar '(lambda (x1 x2 x3)
(/ (+ x1 x2 x3) 3.0)
)
p1
p2
p3
)
)

;; POLYARC-CENTROID
;; Retourne une liste dont le premier élément est le centre de gravité du polyarc
;; et le second son aire algébrique (négative si la courbure est en sens horaire)
;;
;; Arguments
;; bu : la courbure du polyarc (bulge)
;; p1 : le sommet de départ
;; p2 : le sommet de fin

(defun polyarc-centroid (bu p1 p2 / ang rad cen area dist cg)
(setq ang (* 2 (atan bu))
rad (/ (distance p1 p2)
(* 2 (sin ang))
)
cen (polar p1
(+ (angle p1 p2) (- (/ pi 2) ang))
rad
)
area (/ (* rad rad (- (* 2 ang) (sin (* 2 ang)))) 2.0)
dist (/ (expt (distance p1 p2) 3) (* 12 area))
cg (polar cen
(- (angle p1 p2) (/ pi 2))
dist
)
)
(list cg area)
) 

 

J'utilise 3 fonctions de Gile.

John

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Chris, tu te lèves tôt le dimanche dis donc ! :o :P

 

Lecrabe, je te propose le lisp suivant :

 

(defun c:O2BL (/ bname numlen *error* obj acdoc ms blks blk ss ent ent2 count errcount errflag lay pref pt lst pt2 i nbname)
; Crée un bloc pour chaque objet fermé (polyligne, région, cercle, spline, mpolygon) sélectionné.
; Demande de lecrabe sur http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=31981
; Brice Studer, mars 2011
;
;~~~~~~~ CONFIG ~~~~~~~~~~~
(setq bname "BL_") ; préfixe du nom des blocs créés
(setq numlen 3) ; nombre de chiffres de la numérotation, nil pour auto (ex.: si nil, BL_12 ; si 4, BL_0012)
;~~~~~~~ FIN CONFIG ~~~~~~~~~~~

(vl-load-com)
;~~~~~~~ SOUS-FONCTIONS ~~~~~~~~~~~
(defun ZeroPad (str len)
; string en entrée, string en sortie "paddée" avec des 0
; len : nombre de caractères final, nil sort une chaîne identique à celle passée en argument
(if len 
	(while (< (strlen str) len)
		(setq str (strcat "0" str))
		str
	)
	str
)
)

(defun gc:VariantToLispData (var)
; par (gile)
 (cond
   ((= (type var) 'variant)
    (gc:VariantToLispData (vlax-variant-value var)))
   ((= (type var) 'safearray)
    (mapcar 'gc:VariantToLispData (vlax-safearray->list var))
   )
   (T var)
 )
)
;~~~~~~~ FIN SOUS-FONCTIONS ~~~~~~~~~~~

(setq	obj (vlax-get-acad-object)
	acdoc (vla-get-ActiveDocument obj)
	ms (vla-get-modelspace acdoc)
	blks (vla-get-blocks acdoc)
)

(defun *error* (msg)
(and msg
	(or
		(member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON"))
		(princ (strcat "\nErreur : " msg))
	)
)
(if ss (vla-delete ss))
(vla-endundomark acdoc)
(princ)
)

(vla-startundomark acdoc)

(if (setq	ss	(ssget '( (-4 . "							(0 . "CIRCLE")
						(-4 . "")
						(0 . "REGION")
						(-4 . "")
						(0 . "MPOLYGON")
				(-4 . "OR>"))
		)
)
(progn
	(initget "Courant Origine")
	(setq lay (getkword "\nCalque pour l'insertion des blocs [Courant/Origine] : "))
	(if (not lay) (setq lay "Courant"))
	(setq pref (getstring "\nPréfixe de numérotation (Entrée pour aucun): "))
	(if (not pref) (setq pref ""))
	(setq ss (vla-get-activeselectionset acdoc))
	(setq count 0)
	(setq errcount 0)
	(setq i 1)
	(vlax-for ent ss
		(cond
			((= (vla-get-objectname ent) "AcDbRegion")
				(if
					(not
						(vl-catch-all-error-p
							(setq pt (vl-catch-all-apply 'vla-get-centroid (list ent)))
						)
					)
					(progn
						(setq errflag nil)
						(setq pt (vlax-3d-point (gc:VariantToLispData pt)))
					)
					(progn
						(setq errflag T)
						(setq errcount (1+ errcount))
					)
				)
			)
			((= (vla-get-objectname ent) "AcDbCircle")
				(setq pt (vlax-3d-point (gc:VariantToLispData (vla-get-center ent))))
				(setq errflag nil)
			)
			((= (vla-get-objectname ent) "AcDb3dPolyline")
				(setq pt (vlax-3d-point (gc:VariantToLispData (vla-get-coordinate ent 0))))
				(setq errflag nil)
			)
			((or
				(= (vla-get-objectname ent) "AcDbPolyline")
				(= (vla-get-objectname ent) "AcDb2dPolyline")
			)
				(setq pt (gc:VariantToLispData (vla-get-coordinate ent 0)))
				(setq pt (vlax-3D-point (list (car pt) (cadr pt) (vla-get-elevation ent))))
				(setq errflag nil)
			)
			((= (vla-get-objectname ent) "AcDbSpline")
				(setq lst (gc:VariantToLispData (vla-get-controlpoints ent)))
				(setq pt (vlax-3d-point (list (car lst) (cadr lst) (caddr lst))))
				(setq errflag nil)
			)
			((= (vla-get-objectname ent) "AcDbMPolygon")
				(setq pt (cdr (assoc 11 (entget (vlax-vla-object->ename ent)))))
				(setq pt (vlax-3D-point (list (car pt) (cadr pt) (vla-get-elevation ent))))
				(setq errflag nil)
			)
		)
		(if (not errflag)
			(progn
				(while
					(tblsearch "BLOCK" (strcat bname pref (zeropad (itoa i) numlen)))
					(setq i (1+ i))
				)
				(setq blk (vla-add blks pt (setq nbname (strcat bname pref (zeropad (itoa i) numlen)))) )
				(vla-put-layer (setq ent2 (vla-copy ent)) "0")
				(vla-copyobjects acdoc (vlax-safearray-fill (vlax-make-safearray  vlax-vbObject (cons 0 0)) (list ent2)) blk)
				(setq blk (vla-insertblock ms pt nbname 1 1 1 0))
				(if (= lay "Origine")(vla-put-layer blk (vla-get-layer ent)))
				(vla-delete ent2)
				(setq count (1+ count))
			)
		); if not errflag
	);vlax-for ent
	(princ (strcat "\n" (itoa errcount) " objets ignorés."))
	(princ (strcat "\n" (itoa count) " blocs créés."))
);progn if ss
);if ss

(*error* nil)
);

(princ "\nCommande à utiliser: O2BL")
(princ)

 

Ne prends pas en compte les MPOLYGONS pour le moment (je n'en ai pas sous la main pour tester), et je ne me suis pas non plus amusé à chercher le centre de gravité des polylignes et splines pour l'instant. ;)

 

Edit: correction d'un bug sur la prise en charge des polylignes 3d et "lourdes".

Edit2: prise en charge des MPOLYGONs

Edit3: prise en compte de l'élévation des polylignes et mpolygons, les régions non situées dans le plan xy courant sont ignorées.

 

 

 

[Edité le 6/3/2011 par bryce]

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Tout d'abord, bravo à chris_mtp et bryce.

Je pense qu'essayer de répondre aux demandes aussi diverses que variées sur des forums est un excellent moyen pour apprendre et progresser en programmation.

 

Je vous donne donc quelque pistes pour aller plus loin.

 

Pour les mpolygons, voir ce sujet.

Les coordonnées du grip au centre du mpolygon (comme au centre d'une hachure) sont dans le groupe DXF 11.

 

Pour le centre de gravité des polylignes, chris_mtp à trouvé le "bon" code.

 

Pour la création du bloc, je ferais comme bryce avec vla-CopyObjects (ou plutôt vlax-invoke ... 'CopyObjects).

Une fois l'objet copié dans la définition de bloc je le déplacerais avec vla-Move du 'point d'insertion choisi (son centre) vers 0,0,0 de manière à conserver le point de base en 0,0,0 et avoir le centre de l'objet comme point d'insertion pour les références.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

Merci a Chris_mtb et Bryce pour leurs efforts ...

 

Les 2 routines ne fonctionnent pas chez moi, voici le resultat de mes tests

 

***** Tests sur MAP 2006 et 2008 et 2011 *****

 

----- Routine NPOL de Chris_mtp

Commande : npol2bloc

Génération de blocs sur formes closes; erreur : type d'argument incorrect

lselsetp nil

 

----- Routine O2BL de Bryce

Commande : pol2bl

Choix des objets : Spécifiez le coin opposé: 15 trouvé(s)

Choix des objets:

Calque pour l Insertion des blocs [Courant/Origine] :

Prefixe de numerotation (Entree pour aucun) : 1000

Erreur : Erreur Automation. Aucune description n'a été entrée

 

Cependant j'ai simplifie le filtre de la routine O2BL de Byce

pour ne traiter que les polylignes et alors la, ca fonctionne !

 

Donc est ce un probleme de copier / coller du code ?

 

Je vous donne mon adresse courriel pour envoi par MP des routines :

cadxp at hotmail point fr

 

Qu'en pensez vous ?

 

Encore Merci, Le Decapode

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Pour le code de Chris_mtp, les polylignes doivent se trouver sur le calque "LIMPAR", ou sinon il faut modifier les filtres ssget.

 

Concernant mon code, voici un lien pour télécharger le fichier et éliminer la possibilité d'un problème de copier-coller:

http://www.creao.fr/uploads/lisp/o2bl3.lsp

 

Si le souci persiste, tu peux m'envoyer un fichier de test pour que je regarde ce qui cloche (brice at creao punkt fr). ;)

 

Edit: màj du lien

 

 

[Edité le 6/3/2011 par bryce]

Lien vers le commentaire
Partager sur d’autres sites

J'ai mis à jour mon code, j'avais oublié de prendre en charge les polylignes 3d et les polylignes 2d "lourdes"...

C'est sans doute ce qui provoquait une erreur chez lecrabe. ;)

 

 

(gile),

je ferais comme bryce avec vla-CopyObjects (ou plutôt vlax-invoke ... 'CopyObjects)

En fait je préfère volontairement ne pas utiliser vlax-invoke pour que le code soit plus facile à rendre compatible zwcad par exemple.

Y aurait-il par contre une bonne raison d'utiliser (vlax-invoke-method ... 'CopyObjects) plutôt que (vla-CopyObjects ...) ?

 

Une fois l'objet copié dans la définition de bloc je le déplacerais avec vla-Move du 'point d'insertion choisi (son centre) vers 0,0,0 de manière à conserver le point de base en 0,0,0 et avoir le centre de l'objet comme point d'insertion pour les références

Je n'ai pas compris le but de la manoeuvre... :casstet:

Edit: ok c'est bon, je vois ce que tu veux dire.

 

[Edité le 6/3/2011 par bryce]

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Sur MAP 2006, j'ai toujours un probleme curieux sur mon dessin de test : 3DPoly simple, Polylignes 2D simples, Cercles, Splines, Regions

 

Simple signifie pour moi : non lissee, non splinee

 

SI je selectionne TOUT, ta nouvelle routine ne traite CORRECTEMENT

que la 3DPoly et les Regions avec l'erreur suivante :

 

Commande: pol2bl (ou plutot O2BL)

Choix des objets: Spécifiez le coin opposé: 15 trouvé(s)

Choix des objets:

Calque pour Iinsertion des blocs [Courant/Origine] :

Prefixe de numerotation (Entree pour aucun) :

Erreur : Erreur Automation La région ne se situe pas sur le plan du SCU

 

Si je selectionne TOUS SAUF les regions ca fonctionne bien !

 

Donc je soupconne un probleme de filtre ou bien de traitement des regions ! :exclam:

 

Ensuite il y a un petit bug, dans mon dessin de test mes objets sont a des elevations en Z differentes et donc l'insertion de bloc genere doit suivre le Z !

 

C OK pour TOUS les objets (= super) sauf pour les polylignes 2D dont les blocs sont systematiquement inseres avec Z = 0

 

Je continue les tests avec un MAP 2011,

mais je ne pense pas que ce soit lie a la version d'AutoCAD

 

Encore merci pour le boulot du Dimanche, Le Decapode

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Je viens d'ajouter la prise en charge des mpolygons.

Pourrais-tu stp me donner un fichier de test ?

 

Ce n'était pas clair pour moi que les objets avaient un Z, j'avais compris que c'était une fonction Civil qui ferait ça ensuite.

Il change le Z du point d’insertion du bloc pour le monter sur le Mnt 3D
Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

OUI la fonction de Civil va monter les blocs sur le MNT de Civil :)

 

Mais pour un usage plus general, je pense qu'il est MIEUX de generer les blocs (provenant des polylignes 2D) au Z (Elevation) de chaque polyligne ... :P

Ce que tu fais tres bien pour les autres entites ! :D

 

Je vais verifier ma messagerie sur

cadxp at hotmail point fr

Des reception de ton message, je t'envoie mon dessin de test ...

 

Desires tu un dessin test de MPOLYGONs ?

 

Encore Merci, Le Decapode

 

 

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Ok je vais aller voir ma MP

 

Dernier test avec MAP 2006, je confirme que ta derniere routine ne traite pas les Regions ET les MPolygons !?

 

Commande: pol2bl (ou O2BL)

Choix des objets: Spécifiez le coin opposé: 3 trouvé(s)

Choix des objets:

Calque pour Insertion des blocs [Courant/Origine] :

Prefixe de numerotation (Entree pour aucun) :

Erreur : Erreur Automation. Aucune description n'a été entrée.

 

Le Decapode

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Si tu l'as téléchargée via mon lien, ton navigateur a du garder l'ancien fichier en cache. ;)

Je l'ai renommé pour être sûr qu'il le re-télécharge:

http://www.creao.fr/uploads/lisp/o2bl3.lsp

 

 

 

[Edité le 6/3/2011 par bryce]

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Je viens de t'envoyer mon DWG de test par MP

 

ATTENTION : tu verifies l'elevation car je crois que l'elevation courante est a +10 ou -10

ce qui risque de provoquer qq degats !?

 

Sinon je suis en Error HTTP 404 sur ton lien !

 

Mais bon je crois qu tu vas faire qq petites modifs sur ton Lisp (Region, Mpolygon, Elevation), donc je patiente ...

 

Encore Mille mercis, Le Decapode

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Oups, désolé pour le lien, c'est corrigé.

 

Je n'ai pas de pb avec les polylignes et les mpolygons sur ton fichier de test.

 

Il n'y a que les régions qui ne sont pas dans le plan du système de coordonnées courant qui provoquent une erreur, la fonction vla-get-centroid ne les supporte pas.

Pour l'instant je ne vois pas comment faire... :mad:

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

SVP peux tu me renvoyer ton LSP dernier cri par MP en ZIP ?

Ton lien ne passe pas chez moi !! :o

 

J'ai fais mon dessin dans le SCG donc je ne comprend pas

ton message au sujet des regions !!! :exclam:

 

Mes tests ayant ete realises avec MAP 2006, je vais les refaire avec MAP 2011

Tu testes avec quel AutoCAD SVP ?

 

Le Decapode

 

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Raaahh !

J'ai re-corrigé le lien, c'était le texte "Edité le...) qui a mis le bazar.

Cette fois il est bon, c'est sûr, j'ai cliqué dessus pour vérifier. :P

 

Tu as dessiné dans le SCG mais parfois avec une élévation, ce qui fait que certains objets du dessin ont une coordonnée Z non nulle.

Ce qui signifie qu'ils ne se trouvent pas dans le plan XY du SC courant (le SCG donc).

 

Ton dessin contient 3 régions, une avec un Z à 0, une avec un Z à 10, et une autre avec un Z à -10.

Les 2 régions avec un Z non nul sont les 2 seuls objets qui posent problème.

Tous les autres sont convertis en blocs.

 

Je teste avec AutoCAD 2011.

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

OK ca fonctionne sur MAP 2006 avec toutes les entites

et sur la seule region (parmi les 3) qui est au niveau ZERO (celle de gauche),

je suis tres etonne par ce probleme de region au niveau -10 et +10 !

 

Neanmoins, SVP je te sollicite encore pour le probleme d'Insertion des Blocs sur les Polylignes 2D ET SUR les 3 MPolygons

qui se fait au niveau ZERO et pas au niveau Z = Elevation de l'objet

 

Alors que toutes les autres blocs (cercles, splines) sont au bon Z (= Elevation)

 

Merci, Le Decapode

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité