Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Sketch Model Objects
// Ignore the first few unknowns:
struct MSAssetCollection {
let gradients: [<<Unknown>>]
let images: [<<Unknown>>]
let colors: [MSColor]
let imageCollection: MSImageCollection
}
struct MSImageCollection {
let images: [<<Unknown>>]
}
struct MSSymbolContainer {
let objects: [<<Unknown>>]
}
struct MSDocumentData {
let foreignSymbols: [<<Unknown>>]
let layerStyles: MSSharedStyleContainer
let objectID: String
let currentPageIndex: Int
let enableLayerInteraction: Int
let layerSymbols: MSSymbolContainer
let assets: MSAssetCollection
let enableSliceInteraction: Int
let layerTextStyles: MSSharedTextStyleContainer
let pages: [MSPage]
}
struct MSRect {
let height: Int
let x: Int
let y: Int
let constrainProportions: Int
let width: Int
}
struct MSArtboardGroup {
let resizesContent: Int
let grid: MSSimpleGrid
let isVisible: Int
let includeInCloudUpload: Int
let backgroundColor: MSColor
let nameIsFixed: Int
let resizingConstraint: Int
let style: MSStyle
let layers: [MSShapeLayer]
let rotation: Int
let isFlippedHorizontal: Int
let horizontalRulerData: MSRulerData
let hasBackgroundColor: Int
let includeBackgroundColorInExport: Int
let name: String
let verticalRulerData: MSRulerData
let objectID: String
let frame: MSRect
let layerListExpandedType: Int
let isFlippedVertical: Int
let resizingType: Int
let shouldBreakMaskChain: Int
let exportOptions: MSExportOptions
let hasClickThrough: Int
let isLocked: Int
let userInfo: [String: Any]
let layout: MSLayoutGrid
}
struct MSExportOptions {
let layerOptions: Int
let exportFormats: [MSExportFormat]
let includedLayerIds: [<<Unknown>>]
let shouldTrim: Int
}
struct MSOvalShape {
let name: String
let resizingConstraint: Int
let nameIsFixed: Int
let objectID: String
let isVisible: Int
let frame: MSRect
let layerListExpandedType: Int
let isFlippedVertical: Int
let resizingType: Int
let rotation: Int
let booleanOperation: Int
let shouldBreakMaskChain: Int
let edited: Int
let path: MSShapePath
let isFlippedHorizontal: Int
let exportOptions: MSExportOptions
let isLocked: Int
}
struct MSLayoutGrid {
let isEnabled: Int
let drawHorizontal: Int
let totalWidth: Int
let rowHeightMultiplication: Int
let guttersOutside: Int
let columnWidth: Int
let gutterWidth: Int
let numberOfColumns: Int
let horizontalOffset: Int
let drawHorizontalLines: Int
let gutterHeight: Int
let drawVertical: Int
}
struct MSCurvePoint {
let hasCurveTo: Int
let curveFrom: CGPoint
let curveTo: CGPoint
let curveMode: Int
let hasCurveFrom: Int
let cornerRadius: Int
let point: CGPoint
}
struct MSSharedStyle {
let name: String
let value: MSStyle
let objectID: String
}
struct MSStyleInnerShadow {
let color: MSColor
let offsetY: Int
let blurRadius: Int
let spread: Int
let offsetX: Int
let contextSettings: MSGraphicsContextSettings
let isEnabled: Int
}
struct MSSimpleGrid {
let gridSize: Int
let isEnabled: Int
let thickGridTimes: Int
}
struct MSStyleFill {
let isEnabled: Int
let gradient: MSGradient
let patternFillType: Int
let fillType: Int
let noiseIndex: Int
let noiseIntensity: Int
let patternTileScale: Int
let contextSettings: MSGraphicsContextSettings
let color: MSColor
}
struct NSColor {
let color: String
}
struct MSRulerData {
let guides: [Int]
let base: Int
}
struct MSSharedStyleContainer {
let objects: [MSSharedStyle]
}
struct MSTextStyle {
let NSStrikethrough: Int
let NSUnderline: Int
let MSAttributedStringTextTransformAttribute: Int
let NSFont: UIFont
let NSParagraphStyle: NSParagraphStyle
let NSColor: NSColor
let NSLigature: Int
let NSKern: Int
}
struct MSGraphicsContextSettings {
let blendMode: Int
let opacity: Int
}
struct MSTextLayer {
let name: String
let resizingConstraint: Int
let nameIsFixed: Int
let objectID: String
let isVisible: Int
let isFlippedVertical: Int
let frame: MSRect
let resizingType: Int
let layerListExpandedType: Int
let style: MSStyle
let rotation: Int
let dontSynchroniseWithSymbol: Int
let attributedString: NSConcreteAttributedString
let isFlippedHorizontal: Int
let glyphBounds: CGPoint
let shouldBreakMaskChain: Int
let automaticallyDrawOnUnderlyingPath: Int
let originalObjectID: String
let exportOptions: MSExportOptions
let lineSpacingBehaviour: Int
let textBehaviour: Int
let isLocked: Int
let heightIsClipped: Int
let userInfo: [String: Any]
}
struct MSShapePathLayer {
let name: String
let resizingConstraint: Int
let nameIsFixed: Int
let objectID: String
let isVisible: Int
let frame: MSRect
let layerListExpandedType: Int
let isFlippedVertical: Int
let resizingType: Int
let rotation: Int
let booleanOperation: Int
let shouldBreakMaskChain: Int
let edited: Int
let path: MSShapePath
let isFlippedHorizontal: Int
let exportOptions: MSExportOptions
let isLocked: Int
}
struct MSShapeGroup {
let clippingMaskMode: Int
let name: String
let resizingConstraint: Int
let nameIsFixed: Int
let objectID: String
let isVisible: Int
let isFlippedVertical: Int
let style: MSStyle
let resizingType: Int
let frame: MSRect
let layerListExpandedType: Int
let rotation: Int
let layers: [MSShapeLayer]
let windingRule: Int
let isFlippedHorizontal: Int
let hasClippingMask: Int
let shouldBreakMaskChain: Int
let originalObjectID: String
let exportOptions: MSExportOptions
let hasClickThrough: Int
let isLocked: Int
let userInfo: [String: Any]
}
struct MSBitmapLayer {
let name: String
let resizingConstraint: Int
let nameIsFixed: Int
let objectID: String
let isVisible: Int
let isFlippedVertical: Int
let clippingMask: CGPoint
let resizingType: Int
let frame: MSRect
let layerListExpandedType: Int
let style: MSStyle
let rotation: Int
let nineSliceScale: CGSize
let isFlippedHorizontal: Int
let image: MSImageData
let shouldBreakMaskChain: Int
let fillReplacesImage: Int
let nineSliceCenterRect: CGPoint
let exportOptions: MSExportOptions
let isLocked: Int
let userInfo: [String: Any]
}
struct MSRectangleShape {
let name: String
let resizingConstraint: Int
let nameIsFixed: Int
let objectID: String
let isVisible: Int
let frame: MSRect
let layerListExpandedType: Int
let resizingType: Int
let fixedRadius: Int
let isFlippedVertical: Int
let rotation: Int
let hasConvertedToNewRoundCorners: Int
let edited: Int
let isFlippedHorizontal: Int
let path: MSShapePath
let shouldBreakMaskChain: Int
let booleanOperation: Int
let exportOptions: MSExportOptions
let isLocked: Int
}
struct MSGradient {
let from: CGPoint
let shouldSmoothenOpacity: Int
let stops: [MSGradientStop]
let to: CGPoint
let elipseLength: Int
let gradientType: Int
}
struct MSExportFormat {
let fileFormat: String
let name: String
let namingScheme: Int
let visibleScaleType: Int
let scale: Int
let absoluteSize: Int
}
struct MSSharedTextStyleContainer {
let objects: [MSSharedStyle]
}
struct MSStyleReflection {
let strength: Int
let isEnabled: Int
let distance: Int
}
struct MSSymbolMaster {
let resizingConstraint: Int
let resizesContent: Int
let isVisible: Int
let includeInCloudUpload: Int
let backgroundColor: MSColor
let nameIsFixed: Int
let style: MSStyle
let layers: [MSShapeLayer]
let rotation: Int
let isFlippedHorizontal: Int
let horizontalRulerData: MSRulerData
let hasBackgroundColor: Int
let includeBackgroundColorInExport: Int
let symbolID: String
let name: String
let verticalRulerData: MSRulerData
let objectID: String
let frame: MSRect
let includeBackgroundColorInInstance: Int
let layerListExpandedType: Int
let isFlippedVertical: Int
let resizingType: Int
let shouldBreakMaskChain: Int
let originalObjectID: String
let exportOptions: MSExportOptions
let hasClickThrough: Int
let isLocked: Int
}
struct MSShapeLayer {
}
struct MSStyleBorder {
let position: Int
let color: MSColor
let gradient: MSGradient
let fillType: Int
let thickness: Int
let contextSettings: MSGraphicsContextSettings
let isEnabled: Int
}
struct MSStyle {
let fills: [MSStyleFill]
let shadows: [MSStyleShadow]
let reflection: MSStyleReflection
let textStyle: MSTextStyle
let miterLimit: Int
let startDecorationType: Int
let borderOptions: MSStyleBorderOptions
let innerShadows: [MSStyleInnerShadow]
let contextSettings: MSGraphicsContextSettings
let endDecorationType: Int
let sharedObjectID: String
let borders: [MSStyleBorder]
let colorControls: MSStyleColorControls
let blur: MSStyleBlur
}
struct MSStyleBorderOptions {
let lineCapStyle: Int
let lineJoinStyle: Int
let dashPattern: [Int]
let isEnabled: Int
}
struct MSGradientStop {
let position: Int
let color: MSColor
}
struct MSLayerGroup {
let name: String
let resizingConstraint: Int
let nameIsFixed: Int
let isVisible: Int
let objectID: String
let style: MSStyle
let layerListExpandedType: Int
let resizingType: Int
let layers: [MSShapeLayer]
let frame: MSRect
let isFlippedVertical: Int
let rotation: Int
let shouldBreakMaskChain: Int
let isFlippedHorizontal: Int
let originalObjectID: String
let exportOptions: MSExportOptions
let hasClickThrough: Int
let isLocked: Int
let userInfo: [String: Any]
}
struct MSPage {
let name: String
let verticalRulerData: MSRulerData
let resizingConstraint: Int
let includeInCloudUpload: Int
let objectID: String
let isVisible: Int
let nameIsFixed: Int
let isFlippedVertical: Int
let style: MSStyle
let frame: MSRect
let layerListExpandedType: Int
let rotation: Int
let resizingType: Int
let layers: [MSArtboardGroup]
let shouldBreakMaskChain: Int
let isFlippedHorizontal: Int
let horizontalRulerData: MSRulerData
let exportOptions: MSExportOptions
let hasClickThrough: Int
let isLocked: Int
}
struct MSShapePath {
let pointRadiusBehaviour: Int
let isClosed: Int
let points: [MSCurvePoint]
}
struct MSImageData {
let size: String
let sha1: String
}
struct MSSymbolInstance {
let symbolID: String
let name: String
let masterInfluenceEdgeMinXPadding: Int
let overrides: [String: Any]
let resizingConstraint: Int
let nameIsFixed: Int
let objectID: String
let isVisible: Int
let masterInfluenceEdgeMinYPadding: Int
let verticalSpacing: Int
let frame: MSRect
let layerListExpandedType: Int
let style: MSStyle
let rotation: Int
let isFlippedVertical: Int
let resizingType: Int
let horizontalSpacing: Int
let shouldBreakMaskChain: Int
let isFlippedHorizontal: Int
let exportOptions: MSExportOptions
let masterInfluenceEdgeMaxXPadding: Int
let isLocked: Int
let masterInfluenceEdgeMaxYPadding: Int
let userInfo: [String: Any]
}
struct MSStyleBlur {
let motionAngle: Int
let center: CGPoint
let radius: Int
let type: Int
let isEnabled: Int
}
struct MSStyleColorControls {
let contrast: Int
let saturation: Int
let hue: Int
let brightness: Int
let isEnabled: Int
}
struct MSStyleShadow {
let color: MSColor
let offsetY: Int
let blurRadius: Int
let spread: Int
let offsetX: Int
let contextSettings: MSGraphicsContextSettings
let isEnabled: Int
}
struct MSColor {
let value: String
}
@PLJNS
Copy link

PLJNS commented Mar 1, 2019

How did you get these?

@forthelesterkids1
Copy link

forthelesterkids1 commented Oct 5, 2019

same question - how did you get these?

@KingOfBrian
Copy link
Author

KingOfBrian commented Oct 9, 2019

Sorry for the delay here. I got this from a bit of a hacky experiment I was playing with https://github.com/rightpoint/sketchycode -- The generated types are pretty mediocre, but you should be able to update the script to generate less bad code, or run more complex sketch files through it to update the models. If you use it for anything useful, please tell me !

@KingOfBrian
Copy link
Author

KingOfBrian commented Oct 9, 2019

Also, FMI -- how did you find this? 😂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment