Aller au contenu

Stylisation et section de coupe


Messages recommandés

Posté(e)

Bonjour à tous,

 

Je cherche à me simplifier la vie et donc je recherche la commande ou l'éventuel code lisp pour qu'en une seule touche je puisse passer mon nuage de point de "Intensité" à "Couleur de balayage" dans la Stylisation.

Sans avoir a sélectionner le nuage et ouvrir les propriétés ou les gros onglets d'autocad.

 

et

 

à reproduire sans les gros onglets quatre icones, les commande de modification "d'épaisseur de section" et "décalage de coupe") (Chacun avec un + et un - )

J'ai par ailleurs trouver les commandes pour les valeurs d'incrémentation (sectionoffsetinc et sectionthicknessinc).

 

Merci d'avance pour vos réponses qui je l'espère seront enthousiasmante.

Posté(e)

Bonjour,

 

Vais pas pouvoir répondre à tes question, mais veut t'en poser.

 

dans quel autocad travail tu?

 

Je cherche à me simplifier la vie

 

on en est tous la.

je m'acharne sur un lisp qui dessine à ma place, je pense que je vais mettre toute ma vie à le faire...

 

sinon, dans quel domaine utilise tu des nuages de point?

 

et à quoi sa sert?

Posté(e)

Bonjour,

 

Je suis sur un Autocad 2016, et je souhaite ne pas avoir la grosse barre des onglets active qui me prends une partie de l'écran pour seulement 2 (DEUX) commandes, c'est pourquoi je souhaite vivement traduire dans un lisp où je pourrais mettre deux petits icones ou voir même deux raccourci clavier.

 

J'ai déjà créer une barre spéciale pour le traitement des nuages de points qui attache mon nuage dans un calque nuage sans avoir a créer le calque au préalable, trace une ligne sur le nuage 3d qui se rabat sur mon plan 2d dans un calque scu, crée une section de coupe par un simple clic (sans sélection et désélection du nuage et de la coupe, etc...

 

Et le top serait :

1) de pouvoir passer le nuage de Intensité à Couleur de balayage par un clic.

2) de cliquer sur + ou - pour augmenter ou réduire l'épaisseur de la section de coupe

3) de cliquer sur + ou - pour déplacer la section de coupe

 

Je dirais tous simplement comme Autocad le propose magnifiquement mais sans les GROS onglets en haut qui me prennent vraiment trop de place (pour pas dire 1/4 de l'ecran).

 

Sachant qu'il s'agit d'élément du nuage dans les propriétés , je pense qu'il y a une super solution à mon problème.

 

Merci pour vos réponse utiles.

Posté(e)

Bonjour,

 

Pour le passage en intensité, j'ai solutionné mon problème et cela marche parfaitement :

 

(command "NUAGEPOINTSSTYLE" "P" "" "I")

 

En revanche pour modifié les valeurs des propriétés de la coupe situé dans Géométrie> Décalage de coupe et Epaisseur de Section, je bloque encore.

 

Cette question n'est pas assez clair ou trop difficile ?

 

screen15.jpg

 

screen14.jpg

 

 

Ce serait dans les valeurs des propriétés :

 

SectionPlaneOffset et SliceDepth

 

Merci a vous

Posté(e)

Les valeurs "11" des propriétés ne sont pas modifiables par un lisp ??

 

(-1 . <Nom d'entité: 7ffffb158c0>)
(0 . "SECTIONOBJECT")
(330 . <Nom d'entité: 7ffffb191f0>)
(5 . "29C")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "coupe")
(100 . "AcDbSection")
(90 . 2)
(91 . 1)
(1 . "Plan de coupe (1)")
(10 0.0 0.0 1.0)
(40 . 20.4173)
(41 . 20.4173)
(70 . 70)
(62 . 9)
(92 . 2)
(11 -41.7993 -52.0 8.96841)
(11 189.065 -52.0 8.96841)
(93 . 2)
(12 189.065 -60.9424 8.96841)
(12 -41.7993 -60.9424 8.96841)
(360 . <Nom d'entité: 7ffffb158e0>)

Posté(e)

(setq ent(car(entsel)))
(vla-put-SectionPlaneOffset (vlax-ename->vla-object ent) -800)
(if
 (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-SliceDepth (list (vlax-ename->vla-object ent) 300)))
 (princ"\nErreur sur SliceDepth"))

;)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Et pour certain peut-être en VBA avec : object.SliceDepth ?

normalement, tout ce que tu peux faire avec le VBA AutoCAD (i.e., l'API COM/ActiveX d'autoCAD), tu peux aussi le faire en Visual LISP avec les fonction vla-*.

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

Posté(e)

Merci a vous c'est exactement ça que je cherchais et cela m'ouvre une porte sur le VBA que je ne connais pas du tout et la je vois beaucoup de possibilité qui me font rêver...

 

Bref, j'ai encore une dernière question sur ce sujet :

 

Comment faire afficher la valeur existante de la SectionPlaneOffset ?

 

C'est pas une histoire avec Ssget ou Entsel ?

 

Merci pour votre aide.

Posté(e)

Bonjour à tous,

 

Pourquoi le (entlast) ne fonctionne pas ?

 

(ssget "_X" '((8 . "coupe")))

(vla-put-SectionPlaneOffset (vlax-ename->vla-object (entlast) ) 10))

 

Peut-on ajouté à la valeur existante plutôt que de saisir une nouvelle valeur ?

 

Merci par avance pour vos réponses

Posté(e)

ton ssget ne récupère rien pour l'instant ni ne donne une entité à un process.

Quant au (entlast) c'est le dernier objet créé sans aucun filtre !

Pour que ton ssget ne sélectionne qu'une entité :

(setq obj(ssget ":e:s"  '((8 . "coupe"))))
(vla-put-SectionPlaneOffset (vlax-ename->vla-object (ssname obj 0)) 10))

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Merci Beaucoup Tramber,

 

Si j'ai bien compris il faut mettre la récupération dans une variable et appeler l'objet à l'aide de ssname.

 

Et la ça fonctionne, merci.

 

 

En revanche comment affiché la valeur existante de la SectionPlaneOffset ?

Posté(e)

Je pensais à un truc comme ça, mais cela doit-être brouillon car cela ne fonctionne pas :

 

(setq val1 (ssget ":e:s" '((11 . "coupe"))  ))

(setq Epaisseurplus (getreal (StrCat "\nValeur <" (Rtos val1 2 2) "> : " )))

Posté(e)

Oui c'est vrai, j'avais oublié cette question :

(vla-get-SectionPlaneOffset (vlax-ename->vla-object (ssname obj 0))))

non vérifié

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Merci encore Tramber,

 

C'est au top et si je comprends bien le "vla-get-...." interroge ou récupère les renseignements, bien sur grâce au "ssname" aussi :)

 

(setq obj (ssget "_X"  '((8 . "coupe"))))

(setq val1 (vla-get-SectionPlaneOffset (vlax-ename->vla-object (ssname obj 0))))

(setq NVP (getreal (StrCat "\nSaisie <" (Rtos val1 2 2) "> : " )))

(vla-put-SectionPlaneOffset (vlax-ename->vla-object (ssname obj 0)) NVP)

 

Merci beaucoup

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é