@mseiser have written this simple application macro to set all lines of a given linetype style to halftone or not. You first select one of the line or lines containing the styles you want to be halftone and then press 'Yes' to set as halftone in the view and 'No' to remove halftone.
Works by overriding element graphical settings in view rather than by category which as you've mentioned can't be done.
You just need to create a new VB application module (any name)

Insert the text below
Compile the macro

Run by either double clicking the macro name or run button within the macro manager window.
'
' Created by SharpDevelop.
' User: Richard
' Date: 10/03/2018
' Time: 20:07
'
' To change this template use Tools | Options | Coding | Edit Standard Headers.
'
Imports System
Imports Autodesk.Revit.UI
Imports Autodesk.Revit.DB
Imports Autodesk.Revit.UI.Selection
Imports System.Collections.Generic
Imports System.Linq
<Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)> _
<Autodesk.Revit.DB.Macros.AddInId("9579F215-299D-405D-B7D4-C255C5EC894A")> _
Partial Public Class ThisApplication
Private Sub Module_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
End Sub
Private Sub Module_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown
End Sub
Public Sub SetHalftone
Dim Doc As Document = ActiveUIDocument.Document
Dim R As iList(Of Reference) = Nothing
Try
R = ActiveUIDocument.Selection.PickObjects(ObjectType.Element, New IFiltLineFilter,"Select lines containing graphics style used as key")
Catch ex As Exception
End Try
If R Is Nothing Then Exit Sub Else
Dim TD As New TaskDialog("Halftone")
TD.MainInstruction = "Set halftone?"
TD.MainContent = "Yes to set, no to remove."
TD.AllowCancellation = True
TD.CommonButtons = TaskDialogCommonButtons.Yes + TaskDialogCommonButtons.No
Dim TDR As TaskDialogResult = TD.Show()
Select Case TDR
Case Is = TaskDialogResult.Yes, TaskDialogResult.No
Case Else
Exit sub
End Select
Dim Curvs As IEnumerable(Of ElementId)
Curvs = From J As Reference In R
Let Cl As CurveElement = TryCast(Doc.GetElement(J), CurveElement)
Where Cl Is Nothing = False
Select Cl.LineStyle.Id
Dim Cx As List(Of ElementId) = Curvs.ToList
Dim FEC As New FilteredElementCollector(Doc, Doc.ActiveView.Id)
Dim ECF As New ElementCategoryFilter(BuiltInCategory.OST_Lines)
Dim Els As IList(Of Element) = FEC.WherePasses(ECF).ToElements
Dim OGS As New OverrideGraphicSettings()
OGS.SetHalftone(TDR = TaskDialogResult.Yes)
Using Tx As New Transaction(Doc, "Set halftone")
If Tx.Start = TransactionStatus.Started Then
For Each c As Element In Els
If c.GetType.IsSubclassOf(GetType(CurveElement)) Then
Dim CE As CurveElement = DirectCast(c, CurveElement)
If Cx.Contains(CE.LineStyle.Id) Then
Doc.ActiveView.SetElementOverrides(c.Id, OGS)
End If
End If
Next
Tx.Commit()
End If
End Using
End Sub
Private Class IFiltLineFilter
Implements Autodesk.Revit.UI.Selection.ISelectionFilter
Public Function AllowElement(elem As Element) As Boolean Implements Autodesk.Revit.UI.Selection.ISelectionFilter.AllowElement
If elem.GetType.IsSubclassOf(GetType(ModelCurve)) Then Return True Else
If elem.GetType.IsSubclassOf(GetType(DetailCurve)) Then Return True Else
Return False
End Function
Public Function AllowReference(reference As Reference, position As XYZ) As Boolean Implements Autodesk.Revit.UI.Selection.ISelectionFilter.AllowReference
Return True
End Function
End Class
End Class