[CDR X5-X8] как точно вычислить площадь сложных объектов одного цвета

В принципе, можно и без фотошопа обойтись.
Вот как то так
Код:
Sub CountFill()
 ActiveDocument.Unit = cdrMillimeter
 Dim shRange As ShapeRange
 Set shRange = ActiveSelectionRange
 If shRange.Count = 0 Then
    MsgBox "There is no selected shapes in the current document!"
    Exit Sub
 End If
 Dim x As Double
 Dim y As Double
 shRange.GetSize x, y
 
 Dim Opt As New StructExportOptions
 Opt.AntiAliasingType = cdrNormalAntiAliasing
 Opt.SizeX = 1
 Opt.SizeY = 1
 Opt.ImageType = cdrGrayscaleImage
 Opt.Compression = cdrCompressionNone
 TempFile = CorelScriptTools.GetTempFolder() & "Temp.bmp"
 ActiveDocument.Export TempFile, cdrBMP, cdrSelection, Opt
 
 Open TempFile For Binary Access Read Write As #1 Len = 1
 Dim Col As Byte
 Get #1, &H437, Col
 If Col > 254 Then Col = 254
 If Col < &H15 Then Col = &H15
 Col = Col - &H15
 MsgBox "Площадь заполнения примерно " & x * y * (254 - &H15 - Col) / (254 - &H15) & " mm^2"
 Close #1
End Sub
 
  • Спасибо
Реакции: Olga I
но когда таких клише 100-150
спечатываете их все в сепарированный PS, а дальше, хоть фотошопом, хоть программистом считаете, что нужно.

Не по теме:
Я как-то писал скриптик, что считал краскозаполнение для всех сепараций всех файлов в папке. Сейчас уж не найду его, но там вряд ли было больше 10 строк, так что проще написать по-новой, чем искать.
 
"В принципе, можно и без фотошопа обойтись." Простите, не ответила сразу. Огромное Спасибо! Сохранила, жду момента когда понесу это системщикам. Пока затихли с этим вопросам, но, думаю, это временно.
 
Сразу предупреждаю - работает только для одного цвета (черного) и приближение довольно грубое. Хотя в данной задаче точно померять невозможно по определению. Точнее, померить точнее (каламбур! ;) ) можно только в момент вывода на РИПе.
 
  • Спасибо
Реакции: Olga I
Сразу предупреждаю - работает только для одного цвета (черного) и приближение довольно грубое. Хотя в данной задаче точно померять невозможно по определению. Точнее, померить точнее (каламбур! ;) ) можно только в момент вывода на РИПе.
Понятно! Да пока и надо приближенное.
 
а есть ли подобные макросы, но с расчетом процента от площади изделия, по типу програмулины APFill Ink Coverage Meter 'hmmm'
 
Ну поделите на площадь изделия прямо в макросе
 
У каждого sh шейпа есть отображаемая кривая sh.DisplayCurve, площадь которой равна sh.DisplayCurve.Area
Единицы измерения (например, квадратные миллиметры) ей задаются так: ActiveDocument.Unit = cdrMillimeter
Курите хелп редактора макросов, там все доходчиво и с примерами
Готового макроса под вашу конкретную хотелку нет, его надо или заказывать специально обученным людям или писать самому
 
Ищите, обязательно ищите, только не макрос, а другое место работы. Подальше от такого "руководства".
В нынешних условиях такое "руководство" - это неотъемлемый придаток средств промышленного производства. И это редкие оазисы, между которыми перемещение весьма затруднительно.