Retrouver tous les objets d'un calque sur Rhino
Rhino3D, Python
17 mai 2024
Script Python pour Rhino 8 qui ajoute une pastille sur tous les objets d'un calque spécifique, y compris les blocks et objets à l'intérieur de blocks. Utile lorsque l'on a des objets intégrés dans des sucessions de blocks et que l'on n'arrive plus à les retrouver ...
Le script est adaptable également pour qui chercher à calculer les centres de tous les objets d'une scène, y compris ceux à l'intérieurs de blocks.
#! python 3
import rhinoscriptsyntax as rs
import Rhino
def dotIt(obj,centroid):
objLayer = rs.ObjectLayer(obj)
if objLayer == targetLayer:
rs.AddTextDot("Here!",centroid)
def getBlockOrigin(block):
irefObj = rs.coercerhinoobject(block)
idef = irefObj.InstanceDefinition
blockOrigin = irefObj.InsertionPoint
return blockOrigin
def getCentroid(obj): #cannot be directly applied to a block
bb=rs.BoundingBox(obj)
if bb:
centroid = ((bb[0]+bb[6])/2)
return centroid
def loopBlock(block, origin):
blockOrigin = getBlockOrigin(block) + origin
blockCentroid = origin + getCentroid(block)
dotIt(block,blockCentroid)
objectsInBlock = rs.BlockObjects(rs.BlockInstanceName(block))
for obj in objectsInBlock:
if rs.ObjectType(obj) != 4096: #is not a block
objCentroid = blockOrigin + getCentroid(obj)
dotIt(obj,objCentroid)
else:
loopBlock(obj, blockOrigin)
targetLayer = rs.GetLayer()
objs = rs.AllObjects(include_lights=False, include_grips=False)
if objs:
for obj in objs:
if rs.ObjectType(obj) == 4096: #is a block
loopBlock(obj, Rhino.Geometry.Point3d.Origin)
else:
dotIt(obj,getCentroid(obj))
else:
print("Could not select all objects.")
rs.Redraw()
15/10/24 : Fonctionnalité ajoutée à Jester 0.3
Cheatsheet Image Magick et FFMPEG
Windows
28 nov 2023
Image
Convertir toutes les images d'un dossier de WEBP à PNG
mogrify -format webp -quality 80 *.jpg
Réduire de moitié la taille (en pixel) de toutes les images en PNG d'un dossier
mogrify -resize 50% -quality 80 *.png
Son
Convertir un WAV en MP3 VBR de qualité optimale (de 220 à 260 KB/s) (le paramètre -q:a
gère la qualité et se paramètre de 0 à 9)
ffmpeg -i input.wav -codec:a libmp3lame -q:a 0 output.mp3
Convertir tous les fichiers FLAC d'un dossier en MP3 320 KB/s (commande Powershell)
gci -file | Foreach-Object {ffmpeg -i $_.FullName -ab 320k -map_metadata 0 -id3v2_version 3 "$($_.BaseName).mp3"}
Vidéo
Extraire un segment de vidéo sans perte (ici à partir de 1 h 07 min et 5 s, pendant 1 min 25 s)
ffmpeg -ss 01:07:05 -t 00:01:25 -i input.mkv -qscale:v 0 -async 1 output.mp4
Convertire en MP4 optimisé pour le Web (en deux passes)
ffmpeg -i source.mkv -vcodec libx264 -preset slow -crf 24 -ab 192k firstpass.mp4
ffmpeg -i firstpass.mp4 -map_metadata -1 -vcodec libx264 -vf scale=720:-1 -vb 700k -maxrate 8000k -bufsize 1000K -minrate 10k -crf 24 -preset slow -ab 192k web.mp4
Rogner l'image d'une vidéo (avec iw : largeur totale rognée
; ih : hauteur totale rognée)
ffmpeg -i input.mkv -qscale:v 0 -qscale:a 0 -vf "crop=iw-0:ih-150:0:75" output.mp4
Redimensionner (ici 960px par 540px)
ffmpeg -i input.mp4 -vf scale=960:540 output.mp4
Accélérer (augmenter le 5 pour accélérer, le paramètre -r
(fps) n'influe pas sur la vitesse mais sur la qualité)
ffmpeg -i input.mp4 -r 30 -qscale:v 0 -vf "setpts=(1/5)*PTS" output.mp4
Accélérer (augmenter le 5 pour accélérer, le paramètre -r
(fps) n'influe pas sur la vitesse mais sur la qualité)
ffmpeg -i input.mp4 -r 30 -qscale:v 0 -vf "setpts=(1/5)*PTS" output.mp4
Convertir une série d'image en vidéo (ici pour une série d'image en img001.jpg, img002.jpg, ... avec le %03d
pour définir le nombre de chiffre dans le numérotage)
ffmpeg -i img%03d.jpg -vcodec libx264 -b:v 15000k -s 1200x800 -r 60 -vf "setpts=(1/1)*PTS" output.mp4
Télécharger un flux HLS. La première commande affiche la liste des programmes disponibles, la seconde télécharge un programme spécifique avec le paramètre p:1
(ici le second programme).
ffmpeg -i "https://website.net/master.m3u8"
ffmpeg -i "https://website.net/master.m3u8" -map p:1 -c copy -bsf:a aac_adtstoasc output.mp4
Supprimer toutes les méta-données
ffmpeg -i input.mov -map_metadata -1 -c:v copy -c:a copy output.mov
Ajouter des sous-titres SRT à un fichier vidéo
ffmpeg -i input.mp4 -i sub.srt -c copy -c:s mov_text output.mp4
Imprimer des sous-titres SRT sur la vidéo
ffmpeg -i input.m4v -vf subtitles=sub.srt -c:a copy output.m4v
Ajouter une piste audio
ffmpeg -i input.mkv -i audio.mp3 -map 0 -map 1:a -c:v copy -shortest output.mkv
Supprimer une piste audio (le numéro de la piste à supprimer se règle avec le paramètre -0:a:1
, ici avec le 1 pour la deuxième piste)
ffmpeg -i input.mkv -map 0 -map -0:a:1 -c copy output.mkv
Créer un dossier à la date du jour dans le menu contextuel
Windows
14 avr 2022
Pour ajouter une fonctionnalité "Créer un dossier à la date du jour" intégrée au menu contextuel (clic droit) de Windows.
Script à nommer makeDirToday.bat
et placer dans le dossier C:\Program Files\ContextualScripts
– ou ailleurs si l'on modifie également le chemin dans le fichier registre plus bas. Il est calibré pour les versions française ou allemande de Windows de format de date par défaut DD/MM/YYYY
. Il faudra donc l'adapter sur un Windows anglais, par exemple.
@echo off
mkdir %date:~-4,4%"-"%date:~-7,2%"-"%date:~0,2%
Fichier registre .reg
pour installer le script dans le menu contextuel. Double-clic dessous pour l'installer. À bien enregistrer avec encodage ANSI (Windows-1252) pour gérer les accents.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\makeDirToday]
@="&Créer un dossier à date"
"Icon"="%SystemRoot%\\System32\\shell32.dll,71"
[HKEY_CLASSES_ROOT\Directory\Background\shell\makeDirToday\command]
@="C:\\Program Files\\ContextualScripts\\makeDirToday.bat \"%V\""